More helpful error message when a stray Cargo.toml
is present #13904
Description
Problem
Newcomers to Cargo occasionally end up with a Cargo.toml
file that is irrelevant to the project they're trying to run. (It is often in their home directory; perhaps they ran cargo init
not understanding what it does, but that's speculation.) When this happens, they get an error message that doesn't really explain what is going on. An example from today:
$ cargo run
error: failed to parse manifest at '/home/user/Cargo.toml'
Caused by:
this virtual manifest specifies a 'dependencies' section, which is not allowed
New users don't know what a “virtual manifest” is, and are dealing with too many new concepts already to notice that /home/user/Cargo.toml
isn't their project directory, nor do they know that it doesn't make sense to have one there. (And this message doesn't even contain the word “workspace”!)
Proposed Solution
Two parts:
-
When Cargo produces an error, the error is related to an invalid workspace manifest, and the purported workspace manifest path was found in a parent directory (rather than being the direct output of the
locate-project
algorithm), produce a message which prints the paths of both manifests rather than only the workspace manifest, with some explanation that these are two different manifests and how each relates to the situation. -
If the purported workspace manifest is at least two levels up from the project manifest, or is located in the user's home directory, produce an additional help message which speculates that the workspace manifest may be extraneous and should then be either deleted or relocated to avoid nesting unrelated projects.
Notes
@rustbot label +A-diagnostics +A-workspaces +E-easy