Rust 1.66
blog.rust-lang.org
blog.rust-lang.org
This was the original behavior but it was implemented server-side. Things were getting backed up, so they made server processing asynchronous which broke people's workflows. Tools like cargo-release compensated for that. With 1.66, we now have client-side blocking until the crate is published.
The latter two can replace a package manager for Rust related utilities, as I often find that those in OS package repositories are often not as up to date as directly from cargo.
[0] https://github.com/killercup/cargo-edit
`cargo-set-version` has a less clear path to being merged as there isn't as much visible demand for it (there isn't even a `cargo` issue for it).
`cargo upgrade` has the problem of trying to solve too many people's needs and is stuck in UX discussion limbo (https://internals.rust-lang.org/t/feedback-on-cargo-upgrade-...). I'm starting to formulate thoughts on which compromise I want to make to allow that to move forward again.
In addition to the plugins you mentioned, some more worth calling out:
- cargo-release
- cargo-deny
- cargo-semver-checks
- cargo-hack
- cargo-expand
- cargo-nextest
You can also see
- All the plugins at https://crates.io/categories/development-tools::cargo-plugin...
- What people have proposed be added: https://github.com/rust-lang/cargo/issues?q=is%3Aopen+is%3Ai...
It's only little but I love this addition.
A part of the cargo-remove work that didn't make it into 1.66 is that cargo-remove will garbage collect references to the remove dependency. For example, if you remove the last reference to a `workspace.dependency`, it'll automatically remove the workspace entry for you! The original RFC for `workspace.dependency` declared having an unused entry an error but we didn't think it was worth the implementation cost / runtime overhead and now we can automatically clean it up!