Avatar ·

Callbacks idiomáticos en Rust: cómo pasar una función y evitar el borrow checker?

¡Hola a todos! Llevo aproximadamente un mes escribiendo en Rust, vengo de JavaScript, y tengo un problema con la implementación de callbacks. En JS estoy acostumbrado a simplemente pasar una función como argumento: `doSomething(callback)`. En Rust intento hacer lo mismo, pero recibo errores del borrow checker. Aquí está mi código: ```rust struct Processor { callback: fn(i32) -> i32, } impl Processor { fn new(cb: fn(i32) -> i32) -> Self { Processor { callback: cb } } fn process(&self, x: i32) -> i32 { (self.callback)(x) } } fn double(x: i32) -> i32 { x * 2 } fn main() { let proc = Processor::new(double); println!("{}", proc.process(5)); // 10 } ``` Esto funciona, pero solo para funciones normales. Si quiero pasar un closure que capture variables del entorno, el compilador se queja: ```rust let multiplier = 3; let proc = Processor::new(|x| x * multiplier); // error[E0277]: expected a `fn` pointer, found closure ``` ¿Cómo organizar correctamente...