| //@ run-pass | |
| trait Foo<T> { | |
| fn f(&self, x: &T); | |
| } | |
| trait Bar : Sized + Foo<Self> { | |
| fn g(&self); | |
| } | |
| struct S { | |
| x: isize | |
| } | |
| impl Foo<S> for S { | |
| fn f(&self, x: &S) { | |
| println!("{}", x.x); | |
| } | |
| } | |
| impl Bar for S { | |
| fn g(&self) { | |
| self.f(self); | |
| } | |
| } | |
| pub fn main() { | |
| let s = S { x: 1 }; | |
| s.g(); | |
| } |