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
pub trait TraitE { type I3; } pub trait TraitD { type I3; } pub trait TraitC { type I1; type I2; } pub trait TraitB { type Item; } pub trait TraitA<G1, G2, G3> { fn baz< U: TraitC<I1 = G1, I2 = G2> + TraitD<I3 = G3> + TraitE, V: TraitD<I3 = G1> >(_: U, _: V) -> Self where U: TraitB, <U as TraitB>::Item: Copy; }