当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust zeroed用法及代码示例


本文简要介绍rust语言中 Function std::mem::zeroed 的用法。

用法

pub unsafe fn zeroed<T>() -> T

返回由 all-zero byte-pattern 表示的类型 T 的值。

这意味着,例如,(u8, u16) 中的填充字节不一定是零。

无法保证 all-zero byte-pattern 表示某种类型 T 的有效值。例如, all-zero byte-pattern 对于引用类型( &T&mut T )和函数指针来说不是有效值。在此类类型上使用zeroed 会立即导致undefined behavior,因为the Rust compiler assumes 在它认为已初始化的变量中始终存在有效值。

这与 MaybeUninit::zeroed().assume_init() 具有相同的效果。有时它对 FFI 很有用,但通常应避免使用。

例子

该函数的正确用法:用零初始化一个整数。

use std::mem;

let x: i32 = unsafe { mem::zeroed() };
assert_eq!(0, x);

此函数的错误用法:用零初始化引用。

use std::mem;

let _x: &i32 = unsafe { mem::zeroed() }; // Undefined behavior!
let _y: fn() = unsafe { mem::zeroed() }; // And again!

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::mem::zeroed。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。