Ce face cargo check
cargo check parcurge toate etapele compilării care pot găsi erori – analiza sintaxei, verificarea tipurilor, borrow checker-ul – dar sare peste generarea codului mașină. De aceea este de câteva ori mai rapid decât cargo build.
Îl folosești des în timp ce scrii cod, ca să vezi erorile cât mai repede. Editoarele (prin rust-analyzer) fac o verificare asemănătoare la fiecare salvare.
--all-targets verifică și testele, exemplele și benchmark-urile, care altfel nu sunt compilate. Dacă vrei să și rulezi programul, ai nevoie tot de cargo build sau cargo run.
Exemple
Exemplul 1: Verificare fără erori
Cuvântul este „Checking”, nu „Compiling”, și durează doar câteva sutimi de secundă.
$ cargo check
Rezultat în terminal
Checking salut v0.1.0 (/home/ana/proiecte/salut)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.07s
Exemplul 2: Verificare cu o eroare de tip
Aceeași eroare pe care ar da-o cargo build, găsită fără compilarea completă.
// src/main.rs
fn main() {
let varsta: u32 = "17";
println!("Vârsta: {varsta}");
}
$ cargo check
Rezultat în terminal
Checking salut v0.1.0 (/home/ana/proiecte/salut)
error[E0308]: mismatched types
--> src/main.rs:2:23
|
2 | let varsta: u32 = "17";
| --- ^^^^ expected `u32`, found `&str`
| |
| expected due to this
For more information about this error, try `rustc --explain E0308`.
error: could not compile `salut` (bin "salut") due to 1 previous error
Greșeli frecvente
- Crezi că
cargo checkfără erori înseamnă că programul funcționează. Verifică doar compilarea; logica se verifică cu teste (cargo test). - Cauți executabilul după
cargo check: nu există. Pentru executabil foloseștecargo build.
Comenzi înrudite
cargo build: Compilează proiectul și dependențele lui. Executabilul ajunge în target/debug/ sau, cu –release, optimizat în target/release/.cargo clippy: Analizează codul cu sute de reguli (lints) și semnalează greșeli frecvente, cod ineficient sau neidiomatic, cu sugestii de corectare.cargo test: Compilează proiectul în mod test și rulează toate testele: cele #[test], testele din tests/ și exemplele din documentație.