#macro-derive #unions #structs #enums #bytemuck #documentation

无std zeroable

提供对 bytemuck::Zeroable 的 derive 实现

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 无标准库


用于 4 个Crates(3直接使用)

MIT/Apache

29KB
378

Build Status

提供对 bytemuck::Zeroable 的 derive 宏的支持。

Derive文档

以下是 Zeroable 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