| use std::time::Instant; |
| |
| enum Enum { |
| First |
| } |
| |
| #[derive(Clone)] |
| enum CloneEnum { |
| First |
| } |
| |
| struct Struct { |
| } |
| |
| #[derive(Clone)] |
| struct CloneStruct { |
| } |
| |
| struct Foo<X, Y> (X, Y); |
| impl<X: Clone + Default + , Y: Clone + Default> Foo<X, Y> { |
| fn test(&self) -> (X, Y) { |
| (self.0.clone(), self.1.clone()) |
| } |
| } |
| |
| fn test1() { |
| let x = Foo(Enum::First, CloneEnum::First); |
| let y = x.test(); |
| //~^the method `test` exists for struct `Foo<Enum, CloneEnum>`, but its trait bounds were not satisfied [E0599] |
| } |
| |
| fn test2() { |
| let x = Foo(Struct{}, CloneStruct{}); |
| let y = x.test(); |
| //~^the method `test` exists for struct `Foo<Struct, CloneStruct>`, but its trait bounds were not satisfied [E0599] |
| } |
| |
| fn test3() { |
| let x = Foo(Vec::<Enum>::new(), Instant::now()); |
| let y = x.test(); |
| //~^the method `test` exists for struct `Foo<Vec<Enum>, Instant>`, but its trait bounds were not satisfied [E0599] |
| } |
| |
| fn main() {} |