Avatar ·

Callbacks idiomáticos em Rust: como passar uma função e evitar o borrow checker?

Olá a todos! Estou escrevendo em Rust há cerca de um mês, vim do JavaScript, e tive um problema com a implementação de callbacks. Em JS, estou acostumado a simplesmente passar uma função como argumento: `doSomething(callback)`. Em Rust, estou tentando fazer o mesmo, mas recebo erros do borrow checker. Aqui está meu 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 } ``` Isso funciona, mas apenas para funções comuns. Se eu quiser passar uma closure que captura variáveis do ambiente, o compilador reclama: ```rust let multiplier = 3; let proc = Processor::new(|x| x * multiplier); // error[E0277]: expected a `fn` pointer, found closure ``` Como organizar