#[repr(align(1), C)] pub union Align1Union { pub variant1: usize, pub variant2: *mut u8, } #[repr(align(4), C)] pub union Align4Union { pub variant1: usize, pub variant2: *mut u8, } #[repr(align(16), C)] pub union Align16Union { pub variant1: usize, pub variant2: *mut u8, } #[repr(align(1), C)] pub struct Align1Struct { pub arg1: usize, pub arg2: *mut u8, } #[repr(align(2), C)] pub struct Align2Struct { pub arg1: usize, pub arg2: *mut u8, } #[repr(align(4), C)] pub struct Align4Struct { pub arg1: usize, pub arg2: *mut u8, } #[repr(align(8), C)] pub struct Align8Struct { pub arg1: usize, pub arg2: *mut u8, } #[repr(align(32), C)] pub struct Align32Struct { pub arg1: usize, pub arg2: *mut u8, } // Opaque because packed is not defined. #[repr(packed, C)] pub struct OpaquePackedStruct { pub arg1: usize, pub arg2: *mut u8, } // Opaque because packed is not defined. #[repr(packed, C)] pub union OpaquePackedUnion { pub variant1: usize, pub variant2: *mut u8, }