Function konst::maybe_uninit::write

source ·
pub const fn write<T>(md: &mut MaybeUninit<T>, value: T) -> &mut T
Available on crate feature mut_refs only.
Expand description

Const equivalent of MaybeUninit::write

§Example

use std::cmp::Ordering;
use std::mem::MaybeUninit;

use konst::maybe_uninit;

const fn cond_init(mu: &mut MaybeUninit<u32>, value: u32) -> Option<&mut u32> {
    if value % 3 != 0 {
        Some(maybe_uninit::write(mu, value))
    } else {
        None
    }
}

let mut mu = MaybeUninit::uninit();
assert_eq!(cond_init(&mut mu, 0), None);
assert_eq!(cond_init(&mut mu, 1), Some(&mut 1));
assert_eq!(cond_init(&mut mu, 2), Some(&mut 2));
assert_eq!(cond_init(&mut mu, 3), None);
assert_eq!(cond_init(&mut mu, 4), Some(&mut 4));
assert_eq!(cond_init(&mut mu, 5), Some(&mut 5));
assert_eq!(cond_init(&mut mu, 6), None);