Avatar ·

可以在Rust中扩展现有结构体并保留其所有字段吗?

```html Привет! Я только начал изучать Rust после C++ и Java, и у меня возникла проблема. В C++ я мог сделать так: ```cpp struct Base { int x; int y; }; struct Derived : Base { int z; }; ``` И все поля из Base автоматически попадали в Derived. В Java то же самое с наследованием классов. В Rust я попробовал сделать нечто подобное: ```rust struct Base { x: i32, y: i32, } struct Derived { // хочу, чтобы здесь были x и y из Base z: i32, } ``` Но компилятор ругается, что я не объявил поля x и y. Я понимаю, что в Rust нет наследования в классическом смысле, но мне нужно переиспользовать поля из одной структуры в другой. Мне кажется, что копипастить все поля — это ужасная практика. Представьте, что у Base 20 полей, и я хочу сделать 5 разных "наследников" — это же сотни строк однотипного кода! Я слышал про трейты (traits), но они вроде только для методов, а не для данных. Есть ли какой-то способ сделать композицию или делегирование, чтобы не дублировать поля? ```