#![allow(dead_code, deprecated, unused_variables, unused_mut)] use core::mem; use core::fmt::Debug; #[repr(C)] pub struct Struct { a: u8, b: T, } #[derive(Debug)] #[repr(C, align(4))] struct Align4(u32); fn main() { assert_eq!(mem::offset_of!(Struct < dyn Debug >, a), 0); assert_eq!(mem::offset_of!(Struct < Align4 >, b), 4); let value: Struct = Struct { a: 1, b: Align4(2) }; let ref_unsized: &Struct = &value; let offset_of_b = unsafe { (&raw const ref_unsized.b).byte_offset_from_unsigned(ref_unsized) }; assert_eq!(offset_of_b, 4); }