1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
pub trait Foo<A> { fn foo(self, _: A) -> u16; } impl Foo<u16> for u16 { fn foo(self, _: u16) -> u16 { self } } impl Foo<u8> for u16 { fn foo(self, _: u8) -> u16 { self } } pub fn bar() -> u16 { <u16 as Foo<u16>>::foo(0u16, 0u16) }