1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// run-pass struct Foo<A: Repr>(<A as Repr>::Data); impl<A> Copy for Foo<A> where <A as Repr>::Data: Copy {} impl<A> Clone for Foo<A> where <A as Repr>::Data: Clone, { fn clone(&self) -> Self { Foo(self.0.clone()) } } trait Repr { type Data; } impl<A> Repr for A { type Data = u32; } fn main() {}