¿Cómo pasar una función como parámetro en Rust?
¡Hola a todos! Acabo de empezar a aprender Rust y me encontré con un problema. En otros lenguajes, como Python o JavaScript, puedo pasar fácilmente una función como argumento a otra función. Por ejemplo:
```python
def apply(func, x):
return func(x)
def double(x):
return x * 2
result = apply(double, 5)
```
En Rust intenté hacer algo similar, pero el compilador arroja errores. Aquí está mi 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);
}
```
No entiendo qué tipo debo especificar para el parámetro `func`. Probé escribir `fn(i32) -> i32`, pero no funcionó. En la documentación se mencionan los traits `Fn`, `FnMut` y `FnOnce`, pero estoy confundido sobre cuál usar y cómo declarar correctamente estas funciones. Por favor, indíquenme cómo pasar una función como parámetro en Rust. Preferiblemente con ejemplos claros.
<<>>