Ce face HashMap::len
len() returnează numărul de chei (fiecare cheie apare o singură dată). is_empty() este len() == 0. Ambele sunt instantanee.
clear() șterge toate perechile, dar păstrează memoria alocată, ca dicționarul să poată fi umplut din nou fără realocări. Dacă ai nevoie de perechile scoase, folosește drain().
Ce returnează
len: usize; is_empty: bool; clear: nimic.
Exemple
Exemplul 1: Pagini vizitate
Au fost 6 vizite, dar doar 3 pagini distincte: len() numără cheile.
use std::collections::HashMap;
fn main() {
let mut vizite: HashMap<&str, u32> = HashMap::new();
println!("la început: len = {}, is_empty = {}", vizite.len(), vizite.is_empty());
for pagina in ["/", "/blog", "/", "/contact", "/blog", "/"] {
*vizite.entry(pagina).or_insert(0) += 1;
}
let total: u32 = vizite.values().sum();
println!("{} vizite pe {} pagini distincte", total, vizite.len());
vizite.clear();
println!("după clear: len = {}, is_empty = {}", vizite.len(), vizite.is_empty());
}
Rezultat
la început: len = 0, is_empty = true
6 vizite pe 3 pagini distincte
după clear: len = 0, is_empty = true
Exemplul 2: Mesaj diferit pentru coș gol
use std::collections::HashMap;
fn rezumat(cos: &HashMap<&str, u32>) -> String {
if cos.is_empty() {
String::from("Coșul este gol.")
} else {
format!("Ai {} produse diferite în coș.", cos.len())
}
}
fn main() {
let mut cos = HashMap::new();
println!("{}", rezumat(&cos));
cos.insert("mere", 2);
cos.insert("lapte", 1);
println!("{}", rezumat(&cos));
}
Rezultat
Coșul este gol.
Ai 2 produse diferite în coș.
Greșeli frecvente
- Crezi că
len()adună valorile. Numără doar cheile; pentru total foloseștem.values().sum::<u32>(). - Te aștepți ca
clear()să elibereze memoria. Capacitatea rămâne; apeleazăshrink_to_fit()dacă e nevoie.
Comenzi înrudite
HashMap: Dicționarul din Rust: asociază fiecărei chei o valoare și o găsește foarte repede după cheie. Ordinea nu este garantată.HashMap::keys: keys parcurge doar cheile, values doar valorile, iar values_mut dă valorile ca referințe mutabile, pentru modificare.HashMap::drain: Golește dicționarul și dă toate perechile ca iterator, prin valoare; dicționarul rămâne gol, dar utilizabil.Vec::len: len returnează numărul de elemente din vector; is_empty spune dacă vectorul nu are niciun element.