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
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
API GraphQL avec TypeScript : tutoriel étape par étape
Comment devenir développeur Java : conseils et CV en pratique
Journalisation dans les applications Go : meilleures pratiques en pratique
Documentation en TypeScript : comment écrire du code qui parle de lui-même