1 trait Foo {
t1() -> [u8; std::mem::size_of::<Self>()]2     fn t1() -> [u8; std::mem::size_of::<Self>()]; //~ERROR generic parameters
3 }
4 
5 struct Bar<T>(T);
6 
7 impl Bar<u8> {
t2() -> [u8; std::mem::size_of::<Self>()]8     fn t2() -> [u8; std::mem::size_of::<Self>()] { todo!() } // ok
9 }
10 
11 impl<T> Bar<T> {
t3() -> [u8; std::mem::size_of::<Self>()]12     fn t3() -> [u8; std::mem::size_of::<Self>()] {} //~ERROR generic `Self`
13 }
14 
15 trait Baz {
hey()16     fn hey();
17 }
18 
19 impl Baz for u16 {
hey()20     fn hey() {
21         let _: [u8; std::mem::size_of::<Self>()]; // ok
22     }
23 }
24 
main()25 fn main() {}
26