rust/tests/ui/suggestions/derive-trait-for-method-call.rs

45 lines
948 B
Rust

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() {}