¿Ya dominas lo básico? Un curso estructurado de Rust es la vía rápida para dar el salto.
Ver cursos de Rust en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (println!)
- 03Variables y mutabilidad (let / mut)
- 04Anotaciones de tipo y tipos básicos
- 05Condicionales (la expresión if)
- 06Repetir (el bucle for)
- 07Escribir tu propia función
- 08Repetir (while y loop)
- 09La propiedad, lo básico
- 10Préstamos (referencias, &)
- 11Trabajar con vectores (Vec)
- 12Estructuras (struct)
- 13enum y la expresión match
- 14El tipo Option (seguridad frente a null)
- 15El tipo Result y el manejo de errores
- 16Traits (comportamiento compartido)
- 17Genéricos
- 18Closures (funciones anónimas)
- 19Trabajar con texto (String)
- 20[Proyecto] Construye un mini sistema de inventario
Closures (funciones anónimas)
En esta lección crearás una función sin nombre y se la pasarás a otra función.
Un closure se escribe entre barras verticales: |price: i32| price + (price / 10). Puede guardarse en una variable y llamarse como cualquier función. El método map() aplica el closure a cada elemento y collect() junta los resultados en una colección nueva.
El código de ejemplo define un cálculo de impuesto y lo aplica a una lista de precios. El {:?} del println! es el formato de depuración, que es el que sabe imprimir un vector entero.
Lo distintivo del closure frente a una función normal es que puede capturar variables del entorno en el que se creó. Eso es justo lo que lo hace útil, y también lo que obliga a Rust a razonar sobre si lo capturado se toma prestado o se mueve; de ahí vienen los mensajes sobre tiempos de vida cuando un closure sobrevive a lo que capturó.
Fíjate en un detalle: el resultado es [110, 220, 330] porque la división entre enteros descarta los decimales. Con 105 saldría 10 de impuesto, no 10,5. En cálculos de dinero eso importa, y es la razón por la que en producción se trabaja en céntimos con enteros, o con tipos decimales específicos.
🧪 Este sitio no puede compilar ni ejecutar Rust directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
