1 // run-pass 2 3 pub trait MyNum { from_int(_: isize) -> Self4 fn from_int(_: isize) -> Self; 5 } 6 7 pub trait NumExt: MyNum { } 8 9 struct S { v: isize } 10 11 impl MyNum for S { from_int(i: isize) -> S12 fn from_int(i: isize) -> S { 13 S { 14 v: i 15 } 16 } 17 } 18 19 impl NumExt for S { } 20 greater_than_one<T:NumExt>() -> T21fn greater_than_one<T:NumExt>() -> T { MyNum::from_int(1) } 22 main()23pub fn main() { 24 let v: S = greater_than_one(); 25 assert_eq!(v.v, 1); 26 } 27