Avatar ·

Cómo guardar un closure en una estructura en Rust

¡Hola! Empecé a aprender Rust y me encontré con un problema al intentar guardar un closure en una estructura. Tengo una calculadora simple que debe realizar diferentes operaciones dependiendo del closure pasado. Esto es lo que intento hacer: ```rust struct Calculator { operation: fn(i32, i32) -> i32, } fn main() { let add = |a, b| a + b; let calc = Calculator { operation: add }; println!("Result: {}", (calc.operation)(5, 3)); } ``` Este código funciona, pero solo si paso una función normal o un closure que no captura variables del entorno externo. En cuanto intento usar un closure que captura variables, el compilador da un error. Por ejemplo: ```rust let multiplier = 2; let multiply = |a, b| a * b * multiplier; let calc = Calculator { operation: multiply }; // ¡Error! ``` He leído sobre los traits `Fn`, `FnMut` y `FnOnce`, pero no entiendo cómo usarlos correctamente en estructuras. ¿Cómo puedo hacer para que la estructura pueda almacenar