Ce face env::vars
env::vars() dă toate variabilele de mediu ca perechi (String, String). Ordinea nu este garantată. Dacă vreo variabilă are nume sau valoare care nu sunt UTF-8 valide, iteratorul intră în panică; varianta sigură este env::vars_os().
Se folosește de obicei pentru a găsi toate variabilele cu un anumit prefix (de exemplu APP_), pentru diagnostic sau pentru a le transmite mai departe unui proces copil.
Ce returnează
Un iterator Vars peste perechi (String, String).
Exemple
Exemplul 1: Variabilele cu un anumit prefix
Setăm trei variabile la pornire (operație unsafe din ediția 2024), apoi le căutăm după prefix. BTreeMap le ține sortate.
use std::collections::BTreeMap;
use std::env;
fn main() {
// SIGURANȚĂ: încă nu există alte fire.
unsafe {
env::set_var("DEXBLOG_LIMBA", "ro");
env::set_var("DEXBLOG_TEMA", "intunecata");
env::set_var("DEXBLOG_ORAS", "Cluj");
}
let setari: BTreeMap<String, String> = env::vars()
.filter_map(|(k, v)| k.strip_prefix("DEXBLOG_").map(|s| (s.to_lowercase(), v)))
.collect();
for (k, v) in &setari {
println!("{k} = {v}");
}
}
Rezultat
limba = ro
oras = Cluj
tema = intunecata
Exemplul 2: Câte variabile are procesul
Numărul și valorile depind de calculator și de felul în care este pornit programul.
use std::env;
fn main() {
let mut nume: Vec<String> = env::vars().map(|(k, _)| k).collect();
nume.sort();
println!("variabile de mediu: {}", nume.len());
println!("primele 3 (sortate): {:?}", &nume[..3]);
}
Rezultat (depinde de calculator)
variabile de mediu: 42
primele 3 (sortate): ["CARGO", "CARGO_HOME", "CARGO_MANIFEST_DIR"]
Greșeli frecvente
- Afișezi toate variabilele în jurnale: pot conține parole și chei (
AWS_SECRET_ACCESS_KEY,DATABASE_URL). - Te bazezi pe ordinea din
vars(): sortează dacă ai nevoie de ordine stabilă.
Comenzi înrudite
env::var: Citește valoarea unei variabile de mediu (HOME, PATH, setări proprii); dă Err dacă nu există.Command: Pornește alt program (proces copil): new() alege programul, arg() și args() adaugă argumente.env::args: Argumentele din linia de comandă cu care a fost pornit programul; primul este numele programului.