capypad
0 Tage Serie
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
rust
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>