capypad
0 day streak
rust / beginner
Snippet

Using Closures with Iterators

Closures are anonymous functions that capture their environment. Combined with iterators, they enable powerful functional programming patterns. The filter method uses a closure to decide which elements to keep, while map transforms each element.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
fn main() {
let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let doubled: Vec<i32> = numbers
.iter()
.filter(|&&x| x % 2 == 0)
.map(|x| x * 2)
.collect();
println!("Even numbers doubled: {:?}", doubled);
}
Breakdown
1
.iter()
Creates an iterator that borrows vector elements
2
.filter(|&&x| x % 2 == 0)
Closure keeps only even numbers, &&x needed to dereference the reference
3
.map(|x| x * 2)
Closure multiplies each value by 2
4
.collect()
Transforms iterator back into a collection