Rust needs a safe abstraction over uninitialized memory

So, is this UB?

pub fn freeze(x: MaybeUninit<u64>) -> u64 {
    unsafe {
        let r: u64;
        std::arch::asm!(
            "// {}",
            inout(reg) x => r,
            options(nomem,nostack,preserves_flags),
        );
        r
    }
}
2 Likes