27 lines
375 B
Rust
27 lines
375 B
Rust
// 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);
|
|
}
|