// run-pass | |
trait TheTrait : TheSuperTrait<<Self as TheTrait>::Item> { | |
type Item; | |
} | |
trait TheSuperTrait<T> { | |
fn get(&self) -> T; | |
} | |
impl TheTrait for i32 { | |
type Item = u32; | |
} | |
impl TheSuperTrait<u32> for i32 { | |
fn get(&self) -> u32 { | |
*self as u32 | |
} | |
} | |
fn foo<T:TheTrait<Item=u32>>(t: &T) -> u32 { | |
t.get() | |
} | |
fn main() { | |
foo::<i32>(&22); | |
} |