uninitialized in std::mem - Rust
Description: Bypasses Rust’s normal memory-initialization checks by pretending to produce a value of type `T`, while doing nothing at all.
Keywords: rust, rustlang, rust-lang, uninitialized

# Function std::mem::uninitialized
1.0.0[−][src]

    pub unsafe fn uninitialized<T>() -> T

👎 Deprecated since 1.39.0:

use `mem::MaybeUninit` instead

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.)