trait MyClone { fn my_clone(self) -> int; } struct GBox { val: T; } impl MyClone for GBox { fn my_clone(self) -> int { return 1; } } test "generic_trait_method_resolution" { let b = GBox{ val: 10 }; let res = b.my_clone(); assert(res == 1, "Generic trait method call failed"); } trait ValueProvider { fn get_value(self) -> int; } struct Wrapper { inner: T; } impl ValueProvider for Wrapper { fn get_value(self) -> int { return 42; } } test "generic_trait_resolution_complex" { let w = Wrapper{ inner: true }; assert(w.get_value() == 42, "Wrapper trait call failed"); let w2 = Wrapper{ inner: 100 }; assert(w2.get_value() == 42, "Wrapper trait call failed"); }