use core::mem::MaybeUninit; /// Plain Old data type pub trait Pod: Copy + 'static { fn uninit() -> Self { unsafe { MaybeUninit::uninit().assume_init() } } fn zeroed() -> Self { unsafe { MaybeUninit::zeroed().assume_init() } } } macro_rules! primitive { ($($p:ty),*) => { $(impl Pod for $p {})* } } primitive!(u8, u16, u32, u64, u128); primitive!(i8, i16, i32, i64, i128); primitive!(f32, f64, usize, isize); primitive!(()); impl Pod for [T;LEN] {}