rust / intermediate
Snippet
Iterator-Ketten mit Closures
Rust-Iteratoren sind faul — sie tun nichts bis sie konsumiert werden. Methoden wie filter, map und take sind Adaptoren, die Iteratoren transformieren ohne auszuführen. Die collect-Methode konsumiert den Iterator und erzeugt eine Sammlung. Dieser funktionale Stil ermöglicht saubere, zusammensetzbare Datentransformationen mit null Laufzeit-Overhead im Vergleich zu imperativen Schleifen.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fn main() {let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];let result: Vec<i32> = numbers.iter().filter(|&&x| x % 2 == 0).map(|x| x * x).collect();println!("{:?}", result); // [4, 16, 36, 64, 100]// Method chaining with multiple operationslet sum = numbers.iter().filter(|&&x| x > 5).take(3).sum::<i32>();println!("Sum: {}", sum); // 6 + 7 + 8 = 21}
Erklärung
1
.iter()
Erzeugt Iterator der Elemente borgt, Vec bleibt unverändert
2
.filter(|&&x| x % 2 == 0)
Closure nimmt Referenz auf jedes Element, gibt true zum Behalten zurück
3
.map(|x| x * x)
Transformiert jedes Element, quadriert den Wert
4
.collect()
Konsumiert Iterator und baut Sammlung, leitet Vec<i32> Typ ab
5
.take(3)
Begrenzt Iterator auf erste 3 Elemente nach dem Filtern