| //@ run-pass | |
| fn main() { | |
| let x = X(15); | |
| let y = x.foo(); | |
| println!("{:?}",y); | |
| } | |
| trait Foo | |
| where for<'a> &'a Self: Bar | |
| { | |
| fn foo<'a>(&'a self) -> <&'a Self as Bar>::Output; | |
| } | |
| trait Bar { | |
| type Output; | |
| } | |
| struct X(i32); | |
| impl<'a> Bar for &'a X { | |
| type Output = &'a i32; | |
| } | |
| impl Foo for X { | |
| fn foo<'a>(&'a self) -> <&'a Self as Bar>::Output { | |
| &self.0 | |
| } | |
| } |