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.
<<>>