//@ 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); | |
} |