1 // run-pass 2 #![allow(dead_code)] 3 struct S<T, U = u16> { 4 a: T, 5 b: U, 6 } 7 8 trait Tr { 9 type A; 10 } 11 impl Tr for u8 { 12 type A = S<u8, u16>; 13 } 14 f<T: Tr<A = S<u8>>>()15fn f<T: Tr<A = S<u8>>>() { 16 let s = T::A { a: 0, b: 1 }; 17 match s { 18 T::A { a, b } => { 19 assert_eq!(a, 0); 20 assert_eq!(b, 1); 21 } 22 } 23 } 24 main()25fn main() { 26 f::<u8>(); 27 } 28