capypad
0 day streak
rust / beginner
Snippet

Closures: Anonymous Functions

Closures are anonymous functions you can store in variables or pass to functions. They capture their environment. In the example, filter and map use closures to process iterator elements concisely.

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);
}
Breakdown
1
let add = |a: i32, b: i32| -> i32 { a + b };
Closure syntax: vertical bars for parameters, braces for body
2
.filter(|&&x| x % 2 == 0)
Filter closure borrows each element with |&x|, checks evenness
3
.map(|x| x * 2)
Map closure takes ownership of each element and doubles it
4
.collect();
Collects the iterator results back into a Vec<i32>