TL;DR
Cargo.toml に書かれた、使われていない依存関係を見つける Cargo のサブコマンド。
仕組み
cargo metadata で取得したメタデータを利用している。ビルド自体は stable の Rust でできるが、実行には nightly が必要である。
cargo install cargo-udeps --locked
cargo +nightly udeps注意点
- 標準ライブラリやその依存が使っているクレート、依存先がすでに使っているクレートなど、検出できない未使用の依存がある
- クレートを名前だけで照合するので、同じ名前で異なるバージョンのクレートがあるとうまく判定できない
- doc テストでしか使っていない依存は、未使用と報告される。
Cargo.tomlのpackage.metadata.cargo-udeps.ignoreに書くと無視できる
[package.metadata.cargo-udeps.ignore]
normal = ["if_chain"]