本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。