Avatar ·

É 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...