#![feature(supertrait_item_shadowing)] | |
trait A { | |
fn hello(&self) { | |
println!("A"); | |
} | |
} | |
impl<T> A for T {} | |
trait B { | |
fn hello(&self) { | |
println!("B"); | |
} | |
} | |
impl<T> B for T {} | |
trait C: A + B { | |
fn hello(&self) { | |
println!("C"); | |
} | |
} | |
impl<T> C for T {} | |
// Since `D` is not a subtrait of `C`, | |
// we have no obvious lower bound. | |
trait D: B { | |
fn hello(&self) { | |
println!("D"); | |
} | |
} | |
impl<T> D for T {} | |
fn main() { | |
().hello(); | |
//~^ ERROR multiple applicable items in scope | |
} |