Vetor de objetos que implementam um trait comum em Rust: como criar e usar?
Olá! Sou novo em Rust e estou tentando entender polimorfismo. Eu tenho um trait `Shape` com um método `area()`, e várias structs (`Circle`, `Rectangle`) que o implementam. Quero criar um vetor que possa armazenar objetos de diferentes tipos que implementam esse trait.
Em C++ ou Java, eu escreveria algo como `vector shapes;` ou `List shapes = new ArrayList<>();`. Mas em Rust, não posso simplesmente escrever `Vec` — o compilador diz que o tamanho do trait não é conhecido em tempo de compilação.
Aqui está meu código que não funciona:
```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: