#![feature(extern_types)] use std::mem::offset_of; struct Alpha { x: u8, y: u16, z: [u8], } trait Trait {} struct Beta { x: u8, y: u16, z: dyn Trait, } extern { type Extern; } struct Gamma { x: u8, y: u16, z: Extern, } struct Delta { x: u8, y: u16, z: T, } fn main() { offset_of!(Alpha, z); //~ ERROR the size for values of type offset_of!(Beta, z); //~ ERROR the size for values of type offset_of!(Gamma, z); //~ ERROR the size for values of type offset_of!((u8, dyn Trait), 0); // ok offset_of!((u8, dyn Trait), 1); //~ ERROR the size for values of type } fn delta() { offset_of!(Delta, z); //~ ERROR the size for values of type offset_of!(Delta, z); //~ ERROR the size for values of type offset_of!(Delta, z); //~ ERROR the size for values of type } fn generic_with_maybe_sized() -> usize { offset_of!(Delta, z) //~ ERROR the size for values of type } fn illformed_tuple() { offset_of!(([u8], u8), 1); //~ ERROR the size for values of type }