cargo-machete-nk

Remove unused Rust dependencies with this one weird trick!

supported rustc stable

## Introduction This is a fork of `cargo-machete`, which adds a few additional features, such as `--exclude` flag to exclude provided subdirectories from the search. `cargo-machete` is a Cargo tool that detects unused dependencies in Rust projects, in a fast (yet imprecise) way. See also the [original author's blog post](https://blog.benj.me/2022/04/27/cargo-machete/) for a detailed writeup. ## Installation Install `cargo-machete-nk` with cargo: `cargo install cargo-machete-nk` ## Usage Run cargo-machete-nk in a directory that contains one or more Rust projects (using Cargo for dependency management): ```bash cd my-directory && cargo machete-nk # alternatively cargo machete-nk /absolute/path/to/my/directory ``` The **return code** gives an indication whether unused dependencies have been found: - 0 if machete found no unused dependencies, - 1 if it found at least one unused dependency, - 2 if there was an error during processing (in which case there's no indication whether any unused dependency was found or not). This can be used in CI situations. ### False positives To ignore a certain set of dependencies in a crate, add `package.metadata.cargo-machete` to `Cargo.toml` (or `workspace.metadata.cargo-machete` to a workspace `Cargo.toml`), and specify an `ignored` array: For example: ```toml [dependencies] prost = "0.10" # Used in code generated by build.rs output, which cargo-machete cannot check # in an individual package Cargo.toml [package.metadata.cargo-machete] ignored = ["prost"] # in a workspace Cargo.toml [workspace.metadata.cargo-machete] ignored = ["prost"] ``` If there are too many false positives, consider using the `--with-metadata` CLI flag, which will call `cargo metadata --all-features` to find final dependency names, more accurate dependencies per build type, etc. ⚠ This may modify the `Cargo.lock` files in your projects. ## License [MIT license](LICENSE.md).