Я хочу использовать объекты-объекты в 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
.