W3cubDocs

/Rust

Function std::mem::uninitialized

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

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/mem/fn.uninitialized.html