Temas importantes de Rust

Rust Iterators: map, filter, collect

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

  • Avanzado
  • 3 min de lectura
  • 1 ejemplo ejecutable
Lo que aprenderás
  • 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.

Puntos clave

  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.

Ejemplo ejecutable de Rust

Rust
Ejecutar código →
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}");
}
Obtén un botón Run para este ejemplo Resultado de ejecutar el código
[4, 16, 36]
total = 21, max = Some(6)
0: 1
1: 2
any above 5: true

Practica

Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.

¿Terminaste esta lección?

Márcala como aprendida para seguir tu progreso.

Siguiente: Closures →

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos