Comment passer une fonction en paramètre en Rust ?
Bonjour à tous ! Je viens de commencer à apprendre Rust et j'ai rencontré un problème. Dans d'autres langages, comme Python ou JavaScript, je peux facilement passer une fonction comme argument à une autre fonction. Par exemple :
```python
def apply(func, x):
return func(x)
def double(x):
return x * 2
result = apply(double, 5)
```
En Rust, j'ai essayé de faire quelque chose de similaire, mais le compilateur génère des erreurs. Voici mon code :
```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);
}
```
Je ne comprends pas quel type spécifier pour le paramètre `func`. J'ai essayé d'écrire `fn(i32) -> i32`, mais cela n'a pas fonctionné. Dans la documentation, il est question des traits `Fn`, `FnMut` et `FnOnce`, mais je suis confus quant à savoir lequel utiliser et comment déclarer correctement de telles fonctions. Indiquez-moi comment passer correctement une fonction en paramètre en Rust, de préférence avec des exemples concrets.
<<>>