37 lines
537 B
Rust
37 lines
537 B
Rust
#![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
|
|
}
|