Why is this an issue?

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.

Resources

Documentation