1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// run-pass trait A<T> { fn g<U>(&self, x: T, y: U) -> (T, U) { (x, y) } } impl A<i32> for i32 { } impl<T> A<T> for u32 { } fn f<T, U, V: A<T>>(i: V, j: T, k: U) -> (T, U) { i.g(j, k) } pub fn main () { assert_eq!(f(0, 1, 2), (1, 2)); assert_eq!(f(0, 1, 2), (1, 2)); }