typestar

Cortar un stream en Rust

take, skip y sus variantes while recortan un iterador sin un bucle.

fn main() {
    let nums: Vec<i32> = (1..=10).collect();

    let head: Vec<&i32> = nums.iter().take(3).collect();
    let tail: Vec<&i32> = nums.iter().skip(7).collect();
    println!("{:?} {:?}", head, tail);

    let rising: Vec<&i32> = nums.iter().take_while(|n| **n < 5).collect();
    println!("{:?}", rising);

    let joined: Vec<i32> = (1..3).chain(90..92).collect();
    println!("{:?}", joined);
}

Cómo funciona

  1. take para tras n elementos, skip descarta los primeros n.
  2. take_while se detiene en el primer elemento que falla la prueba.
  3. chain corre un iterador después de otro.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
376
Tokens
157
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 99 segundos.

Escribe este fragmento

Paso 3 de 5 en Adaptadores; paso 3 de 14 en Iteradores y closures.

← Anterior Siguiente →