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日 |
#66 in #detail
每月 62 次下载
在 5 个crate中使用(通过 zeroable)
37KB
1K SLoC
为 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 nightly运行的文档示例在doctests中运行,并在文档中显示为已测试
#[no_std]
支持
此crate是 #[no_std]
,并且只要求 core
库。
变更日志
变更日志在 "Changelog.md" 文件中。
最低Rust版本
此crate支持Rust 1.34及更高版本。
lib.rs
:
zeroable
的实现细节。
依赖
~1.5MB
~33K SLoC