Function konst::maybe_uninit::as_mut_ptr

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

Const equivalent of MaybeUninit::as_mut_ptr.

§Example

Initializing a #[repr(u8)] enum

use std::mem::MaybeUninit;

use konst::maybe_uninit as mu;

const ENUM: Enum = {
    let mut mu = MaybeUninit::<Enum>::uninit();
     
    let ptr = mu::as_mut_ptr(&mut mu).cast::<MaybeUninit<Discr>>();
    unsafe{
        *ptr = MaybeUninit::new(Discr::Bar);
        mu.assume_init()
    }
};

unsafe {
    assert_eq!(ENUM, Enum::Bar);
}

#[repr(u8)]
enum Discr {
    Foo,
    Bar,
    Baz,
}

#[repr(u8)]
#[derive(Debug, PartialEq)]
enum Enum {
    Foo(u8),
    Bar,
    Baz{s: String},
}