Closed
Description
Currently, with the following code:
trait A { fn foo(&self) {} }
trait B : A { fn foo(&self) {} }
fn bar<T: B>(a: &T) {
a.foo()
}
fn main() {}
prints the following error message:
error[E0034]: multiple applicable items in scope
--> <anon>:5:5
|
5 | a.foo()
| ^^^ multiple `foo` found
|
note: candidate #1 is defined in the trait `A`
--> <anon>:1:11
|
1 | trait A { fn foo(&self) {} }
| ^^^^^^^^^^^^^^^^
note: candidate #2 is defined in the trait `B`
--> <anon>:2:15
|
2 | trait B : A { fn foo(&self) {} }
| ^^^^^^^^^^^^^^^^
error: aborting due to previous error
It would be nice if it would tell me what exactly do I need to type in order to choose candidate 1 or candidate 2. In particular, when associated types, Input/Output parameters, ... are involved, the disambiguation syntax can be tricky.