rust / beginner
Snippet
Closures: Anonyme Funktionen
Closures sind anonyme Funktionen, die du in Variablen speichern oder an Funktionen übergeben kannst. Sie erfassen ihre Umgebung. Im Beispiel verwenden filter und map Closures, um Iterator-Elemente prägnant zu verarbeiten.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {let add = |a: i32, b: i32| -> i32 { a + b };let result = add(5, 3);println!("5 + 3 = {}", result);let nums = vec![1, 2, 3, 4, 5];let evens: Vec<i32> = nums.iter().filter(|&&x| x % 2 == 0).map(|x| x * 2).collect();println!("Evens doubled: {:?}", evens);}
Erklärung
1
let add = |a: i32, b: i32| -> i32 { a + b };
Closure-Syntax: vertikale Striche für Parameter, geschweifte Klammern für Körper
2
.filter(|&&x| x % 2 == 0)
Filter-Closure leiht jedes Element mit |&x|, prüft Geradheit
3
.map(|x| x * 2)
Map-Closure nimmt Besitz von jedem Element und verdoppelt es
4
.collect();
Sammelt die Iterator-Ergebnisse zurück in einen Vec<i32>