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