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"]

関連

出典