4个版本
0.2.0 | 2019年12月1日 |
---|---|
0.1.2 | 2019年11月30日 |
0.1.1 | 2019年11月30日 |
0.1.0 | 2019年11月30日 |
#236 in 无标准库
29KB
378 行
提供对 bytemuck::Zeroable
的 derive 宏的支持。
Derive文档
示例
结构体
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 } );
枚举
枚举有一些限制,详见 Zeroable宏文档。
use zeroable::Zeroable;
#[derive(Debug,PartialEq,Zeroable)]
#[repr(u8)]
enum Ternary{
Undefined,
False,
True,
}
assert_eq!( Ternary::zeroed() , Ternary::Undefined );
联合体
联合体有一些限制,详见 Zeroable宏文档。
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 );
}
特性
-
"print_type": 稍微改进的调试,在
AssertZeroable<T>
的 ' Debug' 实现中显示T
的类型 -
"nightly_docs": 使需要Rust夜间构建的文档示例在doctests中运行,并在文档中显示为已测试
#[no_std]
支持
此crate是 #[no_std]
,仅需要 core
库。
更新日志
更新日志位于 "Changelog.md" 文件中。
最低Rust版本
此crate支持Rust版本回退到1.34。
依赖项
~1.5MB
~36K SLoC