本文简要介绍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 zeroed用法及代码示例
- Rust zip用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust AtomicU8.fetch_sub用法及代码示例
- Rust PanicInfo.payload用法及代码示例
- Rust MaybeUninit.assume_init_mut用法及代码示例
- Rust String.try_reserve用法及代码示例
- Rust Mutex.new用法及代码示例
- Rust f32.exp用法及代码示例
- Rust Result.unwrap_or_else用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust Formatter.precision用法及代码示例
- Rust i128.log2用法及代码示例
- Rust OsStr.to_ascii_uppercase用法及代码示例
- Rust f32.hypot用法及代码示例
- Rust RefCell.try_borrow_unguarded用法及代码示例
- Rust i16.log10用法及代码示例
- Rust LowerExp用法及代码示例
- Rust HashSet.get_or_insert_with用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::mem::zeroed。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。