Vektor von Objekten, die ein gemeinsames Trait in Rust implementieren: Wie erstellen und verwenden?
Hallo! Ich bin neu in Rust und versuche, Polymorphismus zu verstehen. Ich habe ein Trait `Shape` mit einer Methode `area()` und mehrere Structs (`Circle`, `Rectangle`), die es implementieren. Ich möchte einen Vektor erstellen, der Objekte verschiedener Typen speichern kann, die dieses Trait implementieren.
In C++ oder Java würde ich so etwas wie `vector shapes;` oder `List shapes = new ArrayList<>();` schreiben. Aber in Rust kann ich nicht einfach `Vec` schreiben – der Compiler sagt, dass die Größe des Traits zur Compile-Zeit nicht bekannt ist.
Hier ist mein Code, der nicht funktioniert:
```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,