killercup / killercup/cargo-edit
cargo-upgrade feedback
- Dominant language
- Rust
- Stars
- 3.5k
- Forks
- 166
- PR merge metrics
- No merged PRs in 30d
Description
When running in a workspace with `parse-display 0.7.0` and `parse-display 0.8.0` available
Running this
```
cargo upgrade -p parse-display
```
outputs this:

Excluded list contains a bit more info than is useful - a list of all the crates it didn't updated, including workspace members which it can't possibly update.
This also does nothing to `parse-display`. Incompatible version is mentioned several times but unless you scroll up through several pages of output - it's impossible to see.
When I ask to upgrade a specific crate - I would expect more info about what happened to it. Upgraded, not upgraded, etc.
Running this
```
cargo upgrade -p parse-display@0.7.0
```
Produces similar output, nothing is done to parse-display, no explanation why. It's the same version as currently in use, I would expect to see something like "nothing to do about parse-display" and less about ignored stuff I didn't ask to update.
Running this
```
cargo upgrade -p parse-display@0.8.0
```
produces an error
```
Error: failed to lock to precise version
Caused by:
error: cannot specify both aggressive and precise simultaneously
```
but also updates `Cargo.toml` and `Cargo.lock` files.
The error message seems confusing, same as "both aggressive and precise". If something fails - I would expect it to fail without changing anything.
Running this
```
cargo upgrade -p parse-display@0.9.0
```
produces this
```
As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.
```
(0.9.0 does not exist), but error message is strange - as an end user I'm not using offline mode.
Contributor guide
Research direction
Start by reproducing the four `cargo upgrade` commands shown in the issue and compare their output and file changes. Trace the CLI handling for package selection, precise versions, and offline resolution. Done means requested packages report clear outcomes, failures do not modify `Cargo.toml` or `Cargo.lock`, and offline-related errors accurately reflect the user's invocation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100