mirror of https://github.com/rust-lang/rust
45 lines
948 B
Rust
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() {}
|