2 个版本

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

#867开发工具

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

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>()]};

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

无运行时依赖