2 个版本

0.1.1 2023年8月10日
0.1.0 2021年2月26日

#867开发工具

Download history · Rust 包仓库 64/week @ 2024-03-15 · Rust 包仓库 145/week @ 2024-03-22 · Rust 包仓库 145/week @ 2024-03-29 · Rust 包仓库 79/week @ 2024-04-05 · Rust 包仓库 178/week @ 2024-04-12 · Rust 包仓库 178/week @ 2024-04-19 · Rust 包仓库 112/week @ 2024-04-26 · Rust 包仓库 174/week @ 2024-05-03 · Rust 包仓库 129/week @ 2024-05-10 · Rust 包仓库 322/week @ 2024-05-17 · Rust 包仓库 427/week @ 2024-05-24 · Rust 包仓库 320/week @ 2024-05-31 · Rust 包仓库 329/week @ 2024-06-07 · Rust 包仓库 978/week @ 2024-06-14 · Rust 包仓库 438/week @ 2024-06-21 · Rust 包仓库 80/week @ 2024-06-28 · Rust 包仓库

1,845 每月下载量
2 个 Crates 中使用 (via ledger_device_sdk)

MIT/Apache 许可

8KB
103

Const-zero

提供 core::mem::zeroed() 的 const 版本。

示例用法

示例用法

use const_zero::const_zero;
struct OpaqueStruct {
    nothing: core::ffi::c_void,
};
static mut zeroed_opaque: OpaqueStruct = unsafe {const_zero!(OpaqueStruct)};

理想情况下 const_zero 将是一个泛型函数,但 const 泛型需要更多的发展首先 (const_fn_transmute, const_generics, const_evaluatable_checked)

std::mem::zeroed 的不同

const_zero 将填充位清零,而 std::mem::zeroed 不清零

它是如何工作的?

简化的版本是

union TypeAsBytes<T> {
    bytes: [u8; core::mem::size_of::<T>()],
    inner: T,
};

可以用以下方式初始化

TypeAsBytes {bytes: [0; core::mem::size_of::<T>()]};

如果您想省去依赖,请在您的代码中使用这个技巧

无运行时依赖