Avatar ·

Como passar uma função como parâmetro em Rust?

Olá a todos! Comecei a estudar Rust recentemente e me deparei com um problema. Em outras linguagens, como Python ou JavaScript, posso facilmente passar uma função como argumento para outra função. Por exemplo: ```python def apply(func, x): return func(x) def double(x): return x * 2 result = apply(double, 5) ``` Em Rust, tentei fazer algo semelhante, mas o compilador emite erros. Aqui está meu código: ```rust fn apply(func: ???, x: i32) -> i32 { func(x) } fn double(x: i32) -> i32 { x * 2 } fn main() { let result = apply(double, 5); println!("{}", result); } ``` Não entendo qual tipo especificar para o parâmetro `func`. Tentei escrever `fn(i32) -> i32`, mas não funcionou. Na documentação, fala sobre os traits `Fn`, `FnMut` e `FnOnce`, mas estou confuso sobre qual usar e como declarar essas funções corretamente. Digam-me como passar uma função como parâmetro em Rust? De preferência com exemplos claros. <<>>

Uso dos traits F