Avatar ·

Vecteur d'objets implémentant un trait commun en Rust : comment créer et utiliser ?

Bonjour ! Je suis débutant en Rust et j'essaie de comprendre le polymorphisme. J'ai un trait `Shape` avec une méthode `area()`, et plusieurs structures (`Circle`, `Rectangle`) qui l'implémentent. Je veux créer un vecteur qui peut stocker des objets de différents types implémentant ce trait. En C++ ou Java, j'écrirais quelque chose comme `vector shapes;` ou `List shapes = new ArrayList<>();`. Mais en Rust, je ne peux pas simplement écrire `Vec` — le compilateur dit que la taille du trait n'est pas connue à la compilation. Voici mon code qui ne fonctionne pas : ```rust trait Shape { fn area(&self) -> f64; } struct Circle { radius: f64, } impl Shape for Circle { fn area(&self) -> f64 { std::f64::consts::PI * self.radius * self.radius } } struct Rectangle { width: f64, height: f64, } impl Shape for Rectangle { fn area(&self) -> f64 { self.width * self.height } } fn main() { let shapes: Vec = vec![ Circle { ra