//@ 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); }