typestar

zip, unzip y partition en Rust

Emparejar dos streams, separar los pares, dividir un stream en dos.

fn main() {
    let names = ["ada", "grace", "alan"];
    let stars = [3, 2, 1];

    let paired: Vec<(&&str, &i32)> = names.iter().zip(stars.iter()).collect();
    println!("{:?}", paired);

    let (who, score): (Vec<&str>, Vec<i32>) =
        names.iter().copied().zip(stars.iter().copied()).unzip();
    println!("{:?} {:?}", who, score);

    let (pass, fail): (Vec<i32>, Vec<i32>) =
        (1..=10).partition(|n| n % 3 == 0);
    println!("{:?} {:?}", pass, fail);
}

Cómo funciona

  1. zip se detiene cuando el lado más corto se agota.
  2. unzip necesita los tipos destino anotados.
  3. partition divide según un predicado en dos colecciones.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
425
Tokens
184
Ritmo de tres estrellas
95 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →