Comment spécifier qu'un champ de structure doit implémenter un trait en Rust ?
Bonjour à tous ! J'écris en Rust depuis peu et j'ai un problème avec les traits. Je veux créer une structure qui stocke une valeur, et cette valeur doit obligatoirement implémenter un trait spécifique. Par exemple, j'écris une calculatrice simple où il y a un trait `Operation` avec une méthode `compute`. Je veux que la structure `Calculator` ait un champ `operation` qui peut être n'importe quelle structure implémentant ce trait.
Voici ce que j'essaie de faire :
```rust
trait Operation {
fn compute(&self, a: i32, b: i32) -> i32;
}
struct Calculator {
operation: Operation, // Erreur : les trait objects doivent inclure le mot-clé `dyn`
}
fn main() {
let add = AddOperation;
let calc = Calculator { operation: add };
println!("{}", calc.operation.compute(5, 3));
}
```
Le compilateur donne une erreur : "the trait `Operation` cannot be made into an object". J'ai lu sur `dyn` et `Box`, mais je ne comprends pas quelle approche est correcte. Dois-je utiliser `Box`, ou existe-t-il une méthode avec