Important Rust Topics

Rust Iterators: map, filter, collect

Process a collection as a pipeline: keep some items, change them and gather the result.

  • Advanced
  • 3 min read
  • 1 runnable example
What you'll learn
  • iter, filter and map
  • collect and sum
  • enumerate and take
Even squares of 1 to 6
  1. 1iter()1 2 3 4 5 6
  2. 2filter2 4 6
  3. 3map4 16 36
  4. 4collect[4, 16, 36]

A lazy pipeline

An iterator produces the items of a collection one at a time. Methods such as filter and map build a new iterator, and methods such as collect and sum run it and produce a result.

Iterators are lazy: filter and map do nothing until collect asks for the items. sum needs the result type, here i32. max returns an Option because the list could be empty. enumerate adds the index and take(2) stops after two items.

Key points

  1. filter and map do nothing until a result is asked for.
  2. collect gathers the items into a Vec.
  3. max returns an Option.

Runnable Rust example

Rust
Run code →
main.rs
fn main() {
    let numbers = vec![1, 2, 3, 4, 5, 6];

    let even_squares: Vec<i32> = numbers
        .iter()
        .filter(|n| *n % 2 == 0)
        .map(|n| n * n)
        .collect();
    println!("{:?}", even_squares);

    let total: i32 = numbers.iter().sum();
    let max = numbers.iter().max();
    println!("total = {total}, max = {:?}", max);

    for (index, value) in numbers.iter().enumerate().take(2) {
        println!("{index}: {value}");
    }

    let any_big = numbers.iter().any(|&n| n > 5);
    println!("any above 5: {any_big}");
}
Get a Run button for this example Result of running the code
[4, 16, 36]
total = 21, max = Some(6)
0: 1
1: 2
any above 5: true

Practice

Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.

Finished this lesson?

Mark it as learned to track your progress.

Next: Closures →

Practice with a challenge

Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.

All challenges