| //@ run-pass | |
| #![feature(fn_delegation)] | |
| #![allow(incomplete_features)] | |
| trait Trait : Sized { | |
| fn by_value(self) -> i32 { 1 } | |
| fn by_mut_ref(&mut self) -> i32 { 2 } | |
| fn by_ref(&self) -> i32 { 3 } | |
| } | |
| struct F; | |
| impl Trait for F {} | |
| struct S(F); | |
| impl Trait for S { | |
| reuse Trait::{by_value, by_mut_ref, by_ref} { self.0 } | |
| } | |
| fn main() { | |
| let mut s = S(F); | |
| assert_eq!(s.by_ref(), 3); | |
| assert_eq!(s.by_mut_ref(), 2); | |
| assert_eq!(s.by_value(), 1); | |
| } |