1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
// check-pass trait Baz { type Quaks; } impl Baz for u8 { type Quaks = [u16; 3]; } trait Bar {} impl Bar for [u16; 3] {} impl Bar for [[u16; 3]; 2] {} trait Foo where [<u8 as Baz>::Quaks; 2]: Bar, <u8 as Baz>::Quaks: Bar, { } struct FooImpl; impl Foo for FooImpl {} fn f(_: impl Foo) {} fn main() { f(FooImpl) }