Using MaybeUninit::uninit().assume_init()
results in undefined behavior for most types, since it bypasses initialization and assumes
the data is valid. This can lead to unpredictable results and hard-to-diagnose bugs.
Code examples
Noncompliant code example
use std::mem::MaybeUninit;
let _: usize = unsafe { MaybeUninit::uninit().assume_init() }; // Noncompliant: Unsafe code resulting in undefined behavior.
Compliant solution
use std::mem::MaybeUninit;
let _: [MaybeUninit<bool>; 5] = unsafe { MaybeUninit::uninit().assume_init() }; // Compliant: Allowed for tuples/arrays of MaybeUninit.