4 releases
0.2.0 | Dec 1, 2019 |
---|---|
0.1.2 | Nov 30, 2019 |
0.1.1 | Nov 30, 2019 |
0.1.0 | Nov 30, 2019 |
#329 in No standard library
31 downloads per month
Used in 4 crates
(3 directly)
29KB
378 lines
Provides a derive macro for
bytemuck::Zeroable
.
Derive Documentation
Here is the documentation for the Zeroable
derive macro
Examples
Structs
use zeroable::Zeroable;
#[derive(Debug,PartialEq,Zeroable)]
struct Point3D<T>{
x:T,
y:T,
z:T,
}
assert_eq!( Point3D::zeroed() , Point3D{ x:0, y:0, z:0 } );
Enums
There are some restrictions for enums,documented in the Zeroable macro docs .
use zeroable::Zeroable;
#[derive(Debug,PartialEq,Zeroable)]
#[repr(u8)]
enum Ternary{
Undefined,
False,
True,
}
assert_eq!( Ternary::zeroed() , Ternary::Undefined );
Unions
There are some restrictions for unions,documented in the Zeroable macro docs .
use zeroable::Zeroable;
#[derive(Zeroable)]
union Signedness{
signed:i8,
unsigned:u8,
}
unsafe{
assert_eq!( Signedness::zeroed().signed , 0_i8 );
assert_eq!( Signedness::zeroed().unsigned , 0_u8 );
}
Features
-
"print_type": Slightly improved debugging, shows the type of
T
inAssertZeroable<T>
's ' Debug implementation -
"nightly_docs": Makes the documentation examples that require Rust nightly run in doctests, and shows them as tested in the documentation.
#[no_std]
support
This crate is #[no_std]
,and only requires the core
library.
Changelog
The changelog is in the "Changelog.md" file.
Minimum Rust version
This crate support Rust back to 1.34.
Dependencies
~1.5MB
~39K SLoC