//@ run-pass #![feature(fn_delegation)] #![allow(incomplete_features)] mod to_reuse { use crate::S; pub fn foo<'a>(#[cfg(FALSE)] a: u8, _b: &'a S) -> u32 { 1 } } reuse to_reuse::foo; trait Trait { fn foo(&self) -> u32 { 0 } fn bar(self: Box) -> u32 { 2 } fn baz(a: (i32, i32)) -> i32 { a.0 + a.1 } } struct F; impl Trait for F {} struct S(F); impl Trait for S { reuse to_reuse::foo { self } reuse Trait::bar { Box::new(self.0) } reuse ::baz; } fn main() { let s = S(F); assert_eq!(1, foo(&s)); assert_eq!(1, s.foo()); assert_eq!(2, Box::new(s).bar()); assert_eq!(4, S::baz((2, 2))); }