Auto merge of #10090 - weihanglo:issue-9014, r=alexcrichton
Enhance error message for target auto-discovery
resolves #9014
resolves #9117
Enhance for following scenarios:
1. Target without `path` specified and cannot be found.
2. Target without `path` specified and cannot be found, but a file
exists at the commonly wrong path, e.g. `example/a.rs`, `bench/b.rs`.
3. Found multiple candidate files and cannot infer which to use.
For the suggestion in [the thread in #9116], I can't see any feasible way to list potential candidates without addditional I/O checking file existences. This PR is the best effort I can think of at this time. Feel free to comment. Thanks!
[the thread in #9116]: https://github.com/rust-lang/cargo/pull/9116#discussion_r575712762