Avatar ·

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