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
takepara tras n elementos,skipdescarta los primeros n.take_whilese detiene en el primer elemento que falla la prueba.chaincorre un iterador después de otro.
Palabras clave y builtins usados aquí
Vecfni32let
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.
Paso 3 de 5 en Adaptadores; paso 3 de 14 en Iteradores y closures.