1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
trait Foo { fn default() -> i32; fn get(self) -> i32; } struct Bar(i32); impl Foo for Bar { fn default() -> i32 { 123 } fn get(self) -> i32 { self.0 } } fn type_bound_test<T: Foo>(a: T) -> i32 { T::default() + a.get() } fn main() { let a; a = Bar(456); let b; b = type_bound_test(a); }