Я хочу использовать объекты-объекты в Vec. В С++ я мог бы создать базовый класс Thing, из которого выведены Monster1 и Monster2. Тогда я мог бы создать std::vector<Thing*>. Thing объекты должны хранить некоторые данные, например. x : int, y : int, но производным классам необходимо добавить больше данных.
В настоящее время у меня есть что-то вроде
struct Level {
// some stuff here
pub things: Vec<Box<ThingTrait + 'static>>,
}
struct ThingRecord {
x: i32,
y: i32,
}
struct Monster1 {
thing_record: ThingRecord,
num_arrows: i32,
}
struct Monster2 {
thing_record: ThingRecord,
num_fireballs: i32,
}
Я определяю a ThingTrait с методами для get_thing_record(), attack(), make_noise() и т.д. и реализую их для Monster1 и Monster2.