pub struct Struct(()); impl Struct { pub fn new() -> Self { Struct(()) } pub fn same_ty(&self) -> (usize, usize) { (N, M) } pub fn different_ty(&self) -> (usize, u8) { (N, M) } pub fn containing_ty(&self) -> (usize, u8) { (std::mem::size_of::() + N, M) } pub fn we_have_to_go_deeper(&self) -> Struct { Struct(()) } } pub trait Foo { fn foo(&self) -> usize; } impl Foo for Struct<7> { fn foo(&self) -> usize { M } }