Ce face env::var
env::var("NUME") returnează Ok(valoare) dacă variabila de mediu există sau Err(VarError::NotPresent) dacă nu. Dacă valoarea nu este UTF-8 valid, primești Err(VarError::NotUnicode); varianta env::var_os returnează Option<OsString> și acceptă orice.
Variabilele de mediu sunt folosite des pentru configurare: PORT, DATABASE_URL, RUST_LOG. Un model obișnuit este env::var("PORT").ok().and_then(|p| p.parse().ok()).unwrap_or(8080).
Din ediția 2024, env::set_var și env::remove_var sunt unsafe: modificarea mediului nu este sigură dacă alte fire îl citesc în același timp. Apelează-le doar la pornire, înainte de a crea fire.
Parametri
| Parametru | Descriere |
|---|---|
key |
Numele variabilei de mediu. |
Ce returnează
Result<String, VarError>.
Exemple
Exemplul 1: Variabilă lipsă și valoare implicită
use std::env;
fn main() {
match env::var("DEXBLOG_TEMA") {
Ok(t) => println!("tema: {t}"),
Err(e) => println!("DEXBLOG_TEMA: {e} ({e:?})"),
}
let port: u16 = env::var("DEXBLOG_PORT").ok().and_then(|p| p.parse().ok()).unwrap_or(8080);
println!("port: {port}");
println!("PATH este setat: {}", env::var("PATH").is_ok());
}
Rezultat
DEXBLOG_TEMA: environment variable not found (NotPresent)
port: 8080
PATH este setat: true
Exemplul 2: Setarea unei variabile (unsafe din ediția 2024)
Setăm variabila la pornirea programului, cât timp nu există alte fire. Procesele copil pornite după aceea o moștenesc.
use std::env;
fn main() {
// SIGURANȚĂ: suntem la începutul lui main și nu există alte fire.
unsafe {
env::set_var("DEXBLOG_ORAS", "Iași");
}
println!("oraș: {:?}", env::var("DEXBLOG_ORAS"));
unsafe {
env::remove_var("DEXBLOG_ORAS");
}
println!("după remove_var: {:?}", env::var("DEXBLOG_ORAS"));
}
Rezultat
oraș: Ok("Iași")
după remove_var: Err(NotPresent)
Exemplul 3: Directorul utilizatorului
Valoarea lui HOME diferă de la un calculator la altul. Pe Windows, variabila echivalentă este USERPROFILE.
use std::env;
fn main() {
let acasa = env::var("HOME").unwrap_or_else(|_| String::from("(necunoscut)"));
println!("HOME = {acasa}");
}
Rezultat (depinde de calculator)
HOME = /home/ana
Greșeli frecvente
- Scrii
env::var("PORT").unwrap(): dacă variabila nu este setată, programul intră în panică. Dă o valoare implicită sau un mesaj clar. - Apelezi
env::set_varfărăunsafeîn ediția 2024: eroareacall to unsafe function is unsafe. Mai bine, transmite valori unui proces copil cuCommand::env.
Comenzi înrudite
env::vars: Iterator peste toate variabilele de mediu ale procesului, ca perechi (nume, valoare).env::args: Argumentele din linia de comandă cu care a fost pornit programul; primul este numele programului.Command: Pornește alt program (proces copil): new() alege programul, arg() și args() adaugă argumente.env::current_dir: Returnează directorul de lucru curent al programului, față de care se calculează căile relative.