2016-12-04 20:10:59 -06:00
|
|
|
trait A {
|
|
|
|
fn foo(&mut self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
trait B : A {
|
|
|
|
fn foo(&mut self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn bar<T: B>(a: &T) {
|
2017-11-20 06:13:27 -06:00
|
|
|
a.foo() //~ ERROR multiple applicable items
|
2016-12-04 20:10:59 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
trait C {
|
|
|
|
fn foo(&self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
trait D : C {
|
|
|
|
fn foo(&self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn quz<T: D>(a: &T) {
|
2017-11-20 06:13:27 -06:00
|
|
|
a.foo() //~ ERROR multiple applicable items
|
2016-12-04 20:10:59 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
trait E : Sized {
|
|
|
|
fn foo(self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
trait F : E {
|
|
|
|
fn foo(self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn foo<T: F>(a: T) {
|
2017-11-20 06:13:27 -06:00
|
|
|
a.foo() //~ ERROR multiple applicable items
|
2016-12-04 20:10:59 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
fn pass<T: C>(a: &T) {
|
|
|
|
a.foo()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|