Peut-on étendre une structure existante en Rust tout en conservant tous ses champs ?
Bonjour ! Je viens de commencer à apprendre Rust après C++ et Java, et j'ai un problème.
En C++, je pouvais faire ceci :
```cpp
struct Base {
int x;
int y;
};
struct Derived : Base {
int z;
};
```
Et tous les champs de Base étaient automatiquement présents dans Derived. En Java, c'est la même chose avec l'héritage de classes.
En Rust, j'ai essayé de faire quelque chose de similaire :
```rust
struct Base {
x: i32,
y: i32,
}
struct Derived {
// je veux que x et y de Base soient ici
z: i32,
}
```
Mais le compilateur se plaint que je n'ai pas déclaré les champs x et y. Je comprends que Rust n'a pas d'héritage au sens classique, mais j'ai besoin de réutiliser les champs d'une structure dans une autre.
Je pense que copier-coller tous les champs est une mauvaise pratique. Imaginez que Base ait 20 champs et que je veuille créer 5 « héritiers » différents — cela ferait des centaines de lignes de code redondant !
J'ai entendu parler des traits, mais ils semblent concerner uniquement les méthodes, pas les données. Existe-t-il un moyen de faire de la composition ou de la délégation, qui...