capypad
0 Tage Serie
rust / beginner
Snippet

Grundlegende Iterator-Operationen

Iteratoren bieten eine leistungsstarke Möglichkeit, Datensequenzen zu verarbeiten. Das Iterator-Protokoll besteht aus der next() Methode, die Option<&T> zurückgibt. Allgemeine Methoden wie sum(), filter(), find() und enumerate() bauen auf diesem Protokoll auf. Iteratoren sind faul — sie führen keine Arbeit aus, bis sie von einer Methode wie collect() konsumiert werden.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fn main() {
let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// sum - calculate total
let total: i32 = numbers.iter().sum();
println!("Sum: {}", total);
// filter - keep only matching elements
let evens: Vec<&i32> = numbers.iter().filter(|x| *x % 2 == 0).collect();
println!("Evens: {:?}", evens);
// find - get first matching element
let first_big = numbers.iter().find(|&&x| x > 5);
if let Some(val) = first_big {
println!("First value > 5: {}", val);
}
// enumerate - get index and value
for (index, value) in numbers.iter().enumerate() {
println!("Index {}: {}", index, value);
}
}
Erklärung
1
numbers.iter().sum()
Konsumiert Iterator und gibt Summe aller Elemente zurück
2
.filter(|x| *x % 2 == 0)
Behält nur Elemente, bei denen die Closure true zurückgibt
3
.find(|&&x| x > 5)
Gibt erstes Element zurück, das Prädikat erfüllt als Option
4
.enumerate()
Liefert Tupel von (Index, Wert) Paaren