Function scale_info::prelude::mem::uninitialized
1.0.0 · source · [−]pub unsafe fn uninitialized<T>() -> T
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.)