Iteradores y closures
14 pasos en 5 series de Rust.
Los iteradores de Rust son perezosos, de costo cero, y la forma idiomática de hacerle casi cualquier cosa a una colección. Primero los adaptadores, luego los closures y fold, y después las operaciones terminales que de verdad hacen que algo ocurra.
La última serie es mapas y conteo, que es donde las cadenas de iteradores dejan de ser un ejercicio y empiezan a reemplazar bucles que de otro modo habrías escrito a mano.
Adaptadores
- Adaptadores de iteradoresEncadenar map, filter y collect sobre un iterador.
- enumerate y zipEmparejar elementos de un iterador con índices o entre sí.
- Cortar un streamtake, skip y sus variantes while recortan un iterador sin un bucle.
- filter_map y flat_mapMapear y filtrar en una sola pasada, y aplanar estructura anidada.
- zip, unzip y partitionEmparejar dos streams, separar los pares, dividir un stream en dos.
Closures y fold
- ClosuresFunciones anónimas que capturan su entorno.
- fold y reducePlegar un iterador en un único valor acumulado.
- Pereza, peekable y scanLos adaptadores no hacen nada hasta que algo tira de ellos — por eso mirar y escanear sale barato.
Operaciones terminales
- Preguntarle cosas a un iteradorLos métodos terminales que responden una pregunta en vez de construir una colección.
- Collect hacia lo que seacollect construye el tipo que le pidas — mapa, cadena o Result.
- Deduplicar conservando el ordenElimina duplicados sin perder el orden original, que ordenar destruiría.
Mapas y conteo
- HashMapEl mapa clave-valor y su API entry.
- Conteo de palabras con HashMapCuenta frecuencias de palabras en un HashMap usando la API entry.
Bis
- wordcount.rsUn programa completo de frecuencias: leer stdin, contar, ordenar, imprimir.