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