Rust : configuration commune
≤ 1 min
➡ Mise à jour :
Même si chaque projet est différent, il y a tout de même quelques fondamentaux (qu'il m'arrive d'oublier).
Lints
Dans cargo.toml
[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
enum_glob_use = "deny"
pedantic = "deny"
nursery = "deny"
unwrap_used = "deny"
Puis lancer cargo clippy
ou mieux bacon clippy
(cargo install bacon
)
Journalisation
Ajout du crates
mais désactive les journaux sur la release
cargo add tracing --features release_max_level_off
tracing_subscriber::fmt().with_max_level(Level::DEBUG).init();
debug!("Path {path:?}");
Cache pour le build
# Installation
cargo install sccache
# Utilsation
RUSTC_WRAPPER=sccache cargo run
Optimisation du binaire
Dans cargo.toml
, source
[profile.release]
opt-level = 'z' # Optimize for size.
lto = true # Enable Link Time Optimisation
codegen-units = 1 # Reduced to increase optimisations.
panic = 'abort' # Abort on panic
strip = "symbols" # Strip symbols from binary
Autre
Pour lister les dépendences qui ne sont plus à jour :
cargo outdated -R
# Installé via la commande
cargo install cargo-outdated