//@ check-pass #![feature(fn_delegation)] #![allow(incomplete_features)] trait Trait { fn foo(&self) -> u8 { 0 } fn bar(&self) -> u8 { 1 } } impl Trait for u8 {} struct S(u8); struct Z(u8); impl Trait for S { reuse Trait::{foo, bar} { &self.0 } } impl Trait for Z { reuse ::{foo, bar} { &self.0 } } trait Trait2 where Self: Trait { reuse Trait::{foo, bar}; } mod to_reuse { pub fn a() {} pub fn b() {} } reuse to_reuse::{a, b}; fn main() { let s = S(2); s.foo(); s.bar(); let z = Z(3); z.foo(); z.bar(); a(); b(); }