Ce face Iterator::count
count() numără elementele. De obicei vine după un filter („câte note sunt peste 8?”) sau după un iterator care nu are lungime cunoscută (chars(), split_whitespace()). Consumă iteratorul.
Pentru colecții, len() dă direct numărul de elemente fără parcurgere. Pentru text, s.len() numără octeții, iar s.chars().count() numără caracterele: diferă când există diacritice.
Ce returnează
Numărul de elemente (usize).
Exemple
Exemplul 1: Cuvinte, litere și note mari
fn main() {
let text = "Știința și arta în Țara Românească";
println!("{} cuvinte", text.split_whitespace().count());
println!("{} caractere, dar {} octeți", text.chars().count(), text.len());
let note = [9, 6, 10, 8, 10, 5];
println!("{} note de 9 sau 10", note.iter().filter(|&&n| n >= 9).count());
}
Rezultat
6 cuvinte
34 caractere, dar 41 octeți
3 note de 9 sau 10
Exemplul 2: Vocalele dintr-un nume
fn main() {
let vocale = "aăâeiîou";
for nume in ["Ioana", "Mihai", "Ștefan"] {
let n = nume.to_lowercase().chars().filter(|c| vocale.contains(*c)).count();
println!("{nume}: {n} vocale");
}
}
Rezultat
Ioana: 4 vocale
Mihai: 3 vocale
Ștefan: 2 vocale
Greșeli frecvente
- Folosești
v.iter().count()pe un vector: corect, darv.len()e instant. - Numeri și apoi vrei să folosești același iterator:
countl-a consumat. - Faci
filter(..).count() > 0doar pentru existență:any(..)se oprește la primul element găsit.
Comenzi înrudite
Iterator::sum: sum adună toate elementele, product le înmulțește; tipul rezultatului trebuie precizat.Iterator::filter: Păstrează doar elementele pentru care condiția dată returnează true; restul sunt sărite.Iterator::any: any verifică dacă măcar un element îndeplinește condiția; all verifică dacă toate o îndeplinesc. Se opresc cât de repede pot.Vec::len: len returnează numărul de elemente din vector; is_empty spune dacă vectorul nu are niciun element.