W poniższym wpisie przedstawię tylko kilka komend, z którymi nie będziemy mieć do czynienia od samego początku pracy z Rust a jednak przydatnymi. Oto te komendy:
cargo tree
pokazuje drzewo zależności dla projektu, przykładowy fragment wyniku dla komendy:
bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test) ├── bincode v1.3.1 │ ├── byteorder v1.3.4 │ └── serde v1.0.117 │ └── serde_derive v1.0.117 (proc-macro) │ ├── proc-macro2 v1.0.21 │ │ └── unicode-xid v0.2.1 │ ├── quote v1.0.7 │ │ └── proc-macro2 v1.0.21 (*) │ └── syn v1.0.41 │ ├── proc-macro2 v1.0.21 (*) │ ├── quote v1.0.7 (*) │ └── unicode-xid v0.2.1 ├── flatbuffers v0.6.1 │ └── smallvec v1.4.2
lista nieużywanych zależności w projekcie
cargo udeps
Za pierwszym razem trzeba zainstalować pakiet w cargo za pomocą komendy:
cargo install cargo-udeps
przykładowy wynik:
warning: unused manifest key: target.x86_64-unknown-linux-gnu.rustflags
Checking bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)
Finished dev [unoptimized + debuginfo] target(s) in 0.14s
info: Loading save analysis from "/home/nerull/dev/repos/rust/bench-test/target/debug/deps/save-analysis/bench_test-b8d39e055037d2a8.json"
unused dependencies:
`bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)`
└─── dependencies
├─── "bincode"
├─── "flatbuffers"
├─── "rustc-serialize"
├─── "serde"
├─── "serde_json"
└─── "uuid"
Note: These dependencies might be used by other targets.
To find dependencies that are not used by any target, enable `--all-targets`.
Note: They might be false-positive.
For example, `cargo-udeps` cannot detect usage of crates that are only used in doc-tests.
To ignore some of dependencies, write `package.metadata.cargo-udeps.ignore` in Cargo.toml.żeby mieć pewność trzeba sprawdzić dla wszystkich celów projektu:
cargo udeps --all-targets
rezultat:
warning: unused manifest key: target.x86_64-unknown-linux-gnu.rustflags
Checking bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
info: Loading save analysis from "/home/nerull/dev/repos/rust/bench-test/target/debug/deps/save-analysis/bench_test-b8d39e055037d2a8.json"
info: Loading save analysis from "/home/nerull/dev/repos/rust/bench-test/target/debug/deps/save-analysis/tests-20fc2bc8b39eed17.json"
info: Loading save analysis from "/home/nerull/dev/repos/rust/bench-test/target/debug/deps/save-analysis/bench_test-bcb96f035b1085e4.json"
info: Loading save analysis from "/home/nerull/dev/repos/rust/bench-test/target/debug/deps/save-analysis/benchmarks-a09e6c4afe422f4f.json"
unused dependencies:
`bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)`
└─── dependencies
├─── "bincode"
├─── "rustc-serialize"
└─── "uuid"
Note: They might be false-positive.
For example, `cargo-udeps` cannot detect usage of crates that are only used in doc-tests.
To ignore some of dependencies, write `package.metadata.cargo-udeps.ignore` in Cargo.toml.Jak widać w powyższym wyniku lista nie używanych zależności jest mniejsza
Komenda sprawdzająca aktualność pakietów:
cargo outdated -wR
Za pierwszym razem należy zainstalować pakiet komendą:
cargo install cargo-outdated
Przykładowy wynik komendy:
bench-test ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- rayon 1.4.1 1.5.0 1.5.0 Normal --- tokio 0.2.22 --- 0.3.1 Normal ---
Weryfikacja duplikacji w zależnościach:
cargo tree --duplicate
Przykładowy fragment wyniku:
bitflags v0.7.0
└── decimal v1.0.1
└── cassandra-cpp v0.15.1
└── bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)
bitflags v1.2.1
├── clap v2.33.3
│ └── criterion v0.3.3
│ [dev-dependencies]
│ └── bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)
└── lexical-core v0.7.4
└── nom v5.1.2
└── config v0.10.1
└── bench-test v0.1.0 (/home/nerull/dev/repos/rust/bench-test)Komenda pozwalająca wy-listować wszystkie kompilatory Rust:
rustup show
Przykładowy wynik:
Default host: x86_64-unknown-linux-gnu rustup home: /home/nerull/.rustup installed toolchains -------------------- stable-x86_64-pc-windows-gnu stable-x86_64-unknown-linux-gnu nightly-x86_64-unknown-linux-gnu (default) 1.42.0-x86_64-unknown-linux-gnu active toolchain ---------------- nightly-x86_64-unknown-linux-gnu (directory override for '/home/nerull/dev/repos/rust/bench-test') rustc 1.49.0-nightly (dd7fc54eb 2020-10-15)
Zmiana domyślnego kompilatora na wersje nightly:
rustup default nightly