//@ revisions: current next | |
//@[next] compile-flags: -Znext-solver | |
//@ ignore-compare-mode-next-solver (explicit revisions) | |
// Test that a where clause attached to a method allows us to add | |
// additional constraints to a parameter out of scope. | |
struct Foo<T> { | |
value: T, | |
} | |
struct Bar; // does not implement Eq | |
impl<T> Foo<T> { | |
fn equals(&self, u: &Foo<T>) -> bool | |
where | |
T: Eq, | |
{ | |
self.value == u.value | |
} | |
} | |
fn main() { | |
let x = Foo { value: Bar }; | |
x.equals(&x); | |
//~^ ERROR `Bar: Eq` is not satisfied | |
} |