//@ run-pass | |
#![feature(fn_delegation)] | |
#![allow(incomplete_features)] | |
mod to_reuse { | |
pub fn foo<T>(x: T) -> T { x } | |
} | |
trait Trait1<T, U> { | |
fn foo(&self, _: T, x: U) -> U { x } | |
} | |
#[derive(Default)] | |
struct F; | |
impl<T, U> Trait1<T, U> for F {} | |
trait Trait2<T> { | |
fn get_f(&self) -> &F { &F } | |
reuse Trait1::foo as bar { self.get_f() } | |
reuse to_reuse::foo as baz; | |
} | |
impl Trait2<u64> for F {} | |
fn main() { | |
assert_eq!(F.bar(1u8, 2u16), 2u16); | |
assert_eq!(F::baz(1u8), 1u8); | |
} |