I was originally going off of your comment about manifest-editing being a default option.
Based on your comments combined with the prior art that Nemo157 brought up, it sounds like the proposal would be summarized as
cargo update: same as todaycargo update --save: likecargo update && cargo upgrade --workspace --to-lockfilecargo update --incompatible: error if we try to upgrade to an incompatible version, suggesting adding--savecargo update --incompatible --save: likecargo upgrade --workspace && cargo update && cargo upgrade --workspace --to-lockfile--pinnedwould still exist but require--incompatibleto be present (i.e. we'd start updating pinned version reqs to the lock file)- Provide the direct dependency summary table at the end
This seems to provide a coherent story though I haven't fully thought through --package / --precises behavior.
Trying to think through different use cases
- There seemed to be general interest in keeping library version requirements low within a major version but to upgrade across major versions. This wouldn't be supported today but if we created a
-Z minimal-direct-versionslike I've seen ehuss talk about, then that would be a route forward. - For upgrading individual versions (e.g.
cargo upgrade serde), we could always mimicpoetryandgo getby supportingcargo add <pkg>@latest