É possível em Rust estender uma struct existente mantendo todos os seus campos?
Olá! Comecei a estudar Rust recentemente, depois de C++ e Java, e me deparei com um problema.
Em C++, eu podia fazer assim:
```cpp
struct Base {
int x;
int y;
};
struct Derived : Base {
int z;
};
```
E todos os campos de Base automaticamente estavam em Derived. Em Java, a mesma coisa com herança de classes.
Em Rust, tentei fazer algo parecido:
```rust
struct Base {
x: i32,
y: i32,
}
struct Derived {
// quero que aqui estejam x e y de Base
z: i32,
}
```
Mas o compilador reclama que não declarei os campos x e y. Entendo que Rust não tem herança no sentido clássico, mas preciso reutilizar campos de uma struct em outra.
Acho que copiar e colar todos os campos é uma prática horrível. Imagine que Base tenha 20 campos e eu queira fazer 5 "herdeiros" diferentes — seriam centenas de linhas de código repetitivo!
Ouvi falar sobre traits, mas elas parecem ser apenas para métodos, não para dados. Existe alguma forma de fazer composição ou delegação que...