Ce face cargo fmt
cargo fmt rulează rustfmt pe toate fișierele proiectului și le rescrie în stilul standard: 4 spații de indentare, spații în jurul operatorilor, acolade pe aceeași linie, linii de cel mult 100 de caractere. Așa tot codul Rust arată la fel, iar discuțiile despre stil dispar.
cargo fmt --check nu modifică nimic: afișează diferențele și se termină cu cod de eroare dacă ceva nu este formatat. Este forma folosită în CI.
Câteva reguli se pot schimba într-un fișier rustfmt.toml (de exemplu max_width = 120), dar majoritatea proiectelor păstrează stilul implicit. Majoritatea editoarelor pot rula formatarea la fiecare salvare.
Exemple
Exemplul 1: Verificare și formatare
--check arată cu - liniile vechi și cu + pe cele formatate. După cargo fmt, fișierul a fost rescris.
// src/main.rs înainte
fn main(){
let orase=vec!["Iași","Cluj","Brașov"];
for oras in &orase { println!("{}",oras); }
}
$ cargo fmt --check
$ cargo fmt
$ cat src/main.rs
Rezultat în terminal
Diff in /home/ana/proiecte/salut/src/main.rs:1:
-fn main(){
- let orase=vec!["Iași","Cluj","Brașov"];
- for oras in &orase { println!("{}",oras); }
+fn main() {
+ let orase = vec!["Iași", "Cluj", "Brașov"];
+ for oras in &orase {
+ println!("{}", oras);
+ }
}
fn main() {
let orase = vec!["Iași", "Cluj", "Brașov"];
for oras in &orase {
println!("{}", oras);
}
}
Exemplul 2: Reguli proprii în rustfmt.toml
Fișierul stă în rădăcina proiectului, lângă Cargo.toml. cargo fmt îl citește automat.
# rustfmt.toml
max_width = 120
use_small_heuristics = "Max"
newline_style = "Unix"
Efect
Liniile pot avea până la 120 de caractere, expresiile scurte rămân pe o singură linie, iar fișierele folosesc sfârșit de linie Unix (\n).
Greșeli frecvente
- Primești
cargo-fmt is not installed: componenta lipsește din toolchain. Instaleaz-o curustup component add rustfmt. - Formatezi de mână și apoi te cerți cu formatorul. Lasă
cargo fmtsă decidă și rulează-l înainte de fiecare commit.
Comenzi înrudite
cargo clippy: Analizează codul cu sute de reguli (lints) și semnalează greșeli frecvente, cod ineficient sau neidiomatic, cu sugestii de corectare.rustup: Instalează și actualizează Rust: compilatorul, Cargo și componentele lor, în mai multe versiuni (stable, beta, nightly) și pentru mai multe sisteme.cargo check: Verifică dacă proiectul se compilează (tipuri, borrow checker) fără să producă executabilul. Este mult mai rapid decât cargo build.