Function std::mem::uninitialized 1.0.0[−][src]
pub unsafe fn uninitialized<T>() -> T
👎 Deprecated since 1.39.0:
use mem::MaybeUninit
instead
Expand description
假装产生 T
类型的值,而实际上什么也不做,从而绕过 Rust 的常规内存初始化检查。
不推荐使用此函数。 请改用 MaybeUninit<T>
。
弃用的原因是该函数基本上不能正确使用: 它具有与 MaybeUninit::uninit().assume_init()
相同的作用。
正如 assume_init
文档 所解释的那样,Rust 编译器 假设值已正确初始化。
因此,调用例如
mem::uninitialized::<bool>()
导致立即返回返回的 bool
的不确定行为,该 bool
不一定是 true
或 false
。
更糟糕的是,真正的未初始化内存 (如此处返回的内存) 的特殊之处在于,编译器知道它没有固定的值。
这使得在变量中具有未初始化的数据成为不确定的行为,即使该变量具有整数类型也是如此。
(请注意,关于未初始化整数的规则尚未最终确定,但是除非被确定,否则建议避免使用它们。)