Cargo extension to recycle outdated build artifacts. And try the best to avoid recompilation.
Install it with cargo:
cargo install cargo-gc-binThe executable is cargo-gc. You can invoke it with cargo gc command:
cargo gcIt will check and remove all outdated build artifacts in the current project. See cargo gc --help for more information.
- It needs to invoke
cargo buildthat takes lots of time. - Need to re-link after GC
-
cargo checkwill re-check from scratch
cargo gc uses the output information from cargo build to help recognize build artifacts in use, and removes all others. In the current implementation, top-level arficats are not recognized and leads to re-link after GC.
Compare to other utils like cargo sweep, this one is based on the informations provided by cargo itself rather than filesystem timestamp. So it can be more accurate and still avoiding recompilation as much as possible.
Technically, it's possible to implement a "perfect" GC that can remove all outdated artifacts without any recompilation. And done this in a totally static way (i.e., without invoking cargo build). As the tuple ("crate name", "fingreprint") can be computed outside of cargo.