// run-pass mod a { pub trait Foo { fn foo() -> Self; } impl Foo for isize { fn foo() -> isize { 3 } } impl Foo for usize { fn foo() -> usize { 5 } } } pub fn main() { let x: isize = a::Foo::foo(); let y: usize = a::Foo::foo(); assert_eq!(x, 3); assert_eq!(y, 5); }