| //@ run-pass | |
| #![allow(non_camel_case_types)] | |
| trait bar<T> { | |
| fn get_bar(&self) -> T; | |
| } | |
| fn foo<T, U: bar<T>>(b: U) -> T { | |
| b.get_bar() | |
| } | |
| struct cbar { | |
| x: isize, | |
| } | |
| impl bar<isize> for cbar { | |
| fn get_bar(&self) -> isize { | |
| self.x | |
| } | |
| } | |
| fn cbar(x: isize) -> cbar { | |
| cbar { | |
| x: x | |
| } | |
| } | |
| pub fn main() { | |
| let x: isize = foo::<isize, cbar>(cbar(5)); | |
| assert_eq!(x, 5); | |
| } |