pub unsafe fn uninitialized<T>() -> T
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