fold y reduce en Rust
Plegar un iterador en un único valor acumulado.
fn main() {
let nums = vec![1, 2, 3, 4, 5];
let product = nums.iter().fold(1, |acc, &n| acc * n);
let sum_sq: i32 = nums.iter().map(|&n| n * n).sum();
let first_two: Vec<_> = nums.iter().take(2).collect();
let any_big = nums.iter().any(|&n| n > 4);
println!("{product} {sum_sq} {} {any_big}", first_two.len());
}
Cómo funciona
foldpasa un acumulador a través de los elementos.map(...).sum()es un fold especializado muy común.takeyanyson otros finalizadores de iteradores.
Palabras clave y builtins usados aquí
Vecfni32let
El intento, en números
- Líneas
- 9
- Caracteres a escribir
- 313
- Tokens
- 128
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 77 segundos.
Paso 2 de 3 en Closures y fold; paso 7 de 14 en Iteradores y closures.