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

Download history • Rust 包仓库 5/week @ 2024-02-12 • Rust 包仓库 14/week @ 2024-02-19 • Rust 包仓库 20/week @ 2024-02-26 • Rust 包仓库 14/week @ 2024-03-04 • Rust 包仓库 13/week @ 2024-03-11 • Rust 包仓库

每月 62 次下载
5 个crate中使用(通过 zeroable

MIT/Apache

37KB
1K SLoC

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 nightly运行的文档示例在doctests中运行,并在文档中显示为已测试

#[no_std] 支持

此crate是 #[no_std],并且只要求 core 库。

变更日志

变更日志在 "Changelog.md" 文件中。

最低Rust版本

此crate支持Rust 1.34及更高版本。


lib.rs:

zeroable 的实现细节。

依赖

~1.5MB
~33K SLoC