Ce face cargo run
cargo run este comanda folosită cel mai des în timpul dezvoltării: face cargo build (doar dacă s-a schimbat ceva) și apoi pornește executabilul din target/debug/. Mesajele lui Cargo (Compiling, Finished, Running) apar pe ieșirea de eroare, iar ce afișează programul apare după ele.
Tot ce scrii după -- este trimis programului ca argumente, iar programul le citește cu std::env::args(). Fără --, Cargo ar încerca să interpreteze argumentele ca opțiuni proprii.
--release rulează varianta optimizată. Dacă proiectul are mai multe executabile (în src/bin/) sau exemple (în examples/), alegi cu --bin nume sau --example nume.
Parametri
| Parametru | Descriere |
|---|---|
-- argumente |
Argumentele transmise programului. |
--release |
Rulează varianta optimizată. |
--bin nume |
Alege executabilul, când sunt mai multe. |
--example nume |
Rulează un exemplu din directorul examples/. |
-q |
Ascunde mesajele lui Cargo; rămâne doar ieșirea programului. |
Exemple
Exemplul 1: Programul care citește argumentele
Acesta este src/main.rs folosit în exemplul următor. Rulat aici fără argumente, afișează modul de folosire.
use std::env;
fn main() {
let argumente: Vec<String> = env::args().skip(1).collect();
match argumente.as_slice() {
[nume, oras] => println!("Salut, {nume} din {oras}!"),
_ => println!("Folosire: salut <nume> <oraș>"),
}
}
Rezultat
Folosire: salut <nume> <oraș>
Exemplul 2: Rulare cu argumente și în release
La prima comandă, Cargo compilează și rulează. La a doua, nu s-a schimbat nimic, deci doar rulează (0.00s). --release compilează separat varianta optimizată.
$ cargo run -- Ana Iași
$ cargo run
$ cargo run --release -- Mihai Cluj
Rezultat în terminal
Compiling salut v0.1.0 (/home/ana/proiecte/salut)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.68s
Running `target/debug/salut Ana 'Iași'`
Salut, Ana din Iași!
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/salut`
Folosire: salut <nume> <oraș>
Compiling salut v0.1.0 (/home/ana/proiecte/salut)
Finished `release` profile [optimized] target(s) in 0.46s
Running `target/release/salut Mihai Cluj`
Salut, Mihai din Cluj!
Greșeli frecvente
- Scrii
cargo run Anafără--. Cargo interpreteazăAnaca argument propriu și dă eroare; scriecargo run -- Ana. - Rulezi
cargo rundin alt director decât cel al proiectului:could not find `Cargo.toml`. Intră în directorul proiectului sau folosește--manifest-path. - Citești fișiere cu căi relative și te miri că nu sunt găsite: directorul curent este cel din care ai pornit
cargo run, nusrc/.
Comenzi înrudite
cargo build: Compilează proiectul și dependențele lui. Executabilul ajunge în target/debug/ sau, cu –release, optimizat în target/release/.main: Funcția cu care începe orice program Rust: este apelată automat la pornire, iar programul se termină când ea se termină.cargo new: Creează un proiect Rust nou: directorul, Cargo.toml, src/main.rs (sau src/lib.rs) și un depozit git.cargo check: Verifică dacă proiectul se compilează (tipuri, borrow checker) fără să producă executabilul. Este mult mai rapid decât cargo build.