typestar

Pereza, peekable y scan en Rust

Los adaptadores no hacen nada hasta que algo tira de ellos — por eso mirar y escanear sale barato.

fn main() {
    let mut it = [1, 2, 3].iter().peekable();
    while let Some(n) = it.next() {
        if let Some(next) = it.peek() {
            println!("{n} then {next}");
        } else {
            println!("{n} is last");
        }
    }

    let running: Vec<i32> = [5, 10, 20]
        .iter()
        .scan(0, |total, n| {
            *total += n;
            Some(*total)
        })
        .collect();
    println!("{:?}", running);
}

Cómo funciona

  1. Nada corre hasta que un método terminal pide valores.
  2. peekable mira el siguiente elemento sin consumirlo.
  3. scan acarrea estado, emitiendo un valor por paso.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
321
Tokens
128
Ritmo de tres estrellas
100 tpm

Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 77 segundos.

Escribe este fragmento

Paso 3 de 3 en Closures y fold; paso 8 de 14 en Iteradores y closures.

← Anterior Siguiente →