Function core::mem::uninitialized

1.0.0 · source ·
pub unsafe fn uninitialized<T>() -> T
👎Deprecated since 1.39.0: use mem::MaybeUninit instead
Expand description

假装产生 T 类型的值,而实际上什么也不做,从而绕过 Rust 的常规内存初始化检查。

不推荐使用此函数。 请改用 MaybeUninit<T>。 它也可能比使用 MaybeUninit<T> 慢,因为已采取缓解措施来限制在遗留代码中不正确使用此函数造成的潜在危害。

弃用的原因是该函数基本上不能正确使用:它具有与 MaybeUninit::uninit().assume_init() 相同的作用。 正如 assume_init 文档 所解释的那样,Rust 编译器 假设值已正确初始化。

像这里返回的真正未初始化的内存是特殊的,因为编译器知道它没有固定值。 这使得在变量中具有未初始化的数据成为不确定的行为,即使该变量具有整数类型也是如此。

因此,在几乎所有类型 (包括整数类型和整数类型的数组) 上调用此函数是 immediate 未定义的行为,即使结果未使用。