// run-pass | |
// Test for using an object with an associated type binding as the | |
// instantiation for a generic type with a bound. | |
trait SomeTrait { | |
type SomeType; | |
fn get(&self) -> Self::SomeType; | |
} | |
fn get_int<T:SomeTrait<SomeType=i32>+?Sized>(x: &T) -> i32 { | |
x.get() | |
} | |
impl SomeTrait for i32 { | |
type SomeType = i32; | |
fn get(&self) -> i32 { | |
*self | |
} | |
} | |
fn main() { | |
let x = 22; | |
let x1: &dyn SomeTrait<SomeType=i32> = &x; | |
let y = get_int(x1); | |
assert_eq!(x, y); | |
} |