use core::mem::MaybeUninit; use munge::munge; fn main() { #[repr(packed)] struct Misalign { byte: u8, inner: T, } let mut mu = MaybeUninit::>>::uninit(); munge!( let Misalign { byte: a, inner: Misalign { byte: b, inner } } = &mut mu; ); assert_eq!(a.write(1), &1); assert_eq!(b.write(2), &2); assert_eq!(inner.write(3), &3); // SAFETY: `mu` is completely initialized. let init = unsafe { mu.assume_init() }; assert_eq!(init.byte, 1); assert_eq!(init.inner.byte, 2); assert_eq!(init.inner.inner, 3); }