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

Bypasses Rust’s normal memory-initialization checks by pretending to produce a value of type T, while doing nothing at all.

This function is deprecated. Use MaybeUninit<T> instead.

The reason for deprecation is that the function basically cannot be used correctly: it has the same effect as MaybeUninit::uninit().assume_init(). As the assume_init documentation explains, the Rust compiler assumes that values are properly initialized. As a consequence, calling e.g. mem::uninitialized::<bool>() causes immediate undefined behavior for returning a bool that is not definitely either true or false. Worse, truly uninitialized memory like what gets returned here is special in that the compiler knows that it does not have a fixed value. This makes it undefined behavior to have uninitialized data in a variable even if that variable has an integer type. (Notice that the rules around uninitialized integers are not finalized yet, but until they are, it is advisable to avoid them.)

This documentation is an old archive. Please see https://rust.docs.kernel.org instead.