可以在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), но они вроде только для методов, а не для данных. Есть ли какой-то способ сделать композицию или делегирование, чтобы не дублировать поля?
```