【发布时间】:2018-09-02 03:34:11
【问题描述】:
我正在使用 Rust 创建一个基于文本的垄断游戏作为个人项目。我目前的设置是将各种空间作为自己的结构(例如,Property)
use space::Event;
pub struct Property {
message: String,
}
impl Property {
pub fn new() -> Property {
let message = String::from("Hello World!");
Property { message: message }
}
}
impl Event for Property {
fn event(&self) {
print!("{}", &self.message);
}
}
还有一个通用的 Space 结构,它包含其中一种空格类型的实例(例如Space<Property> 或Space<Chance>)。
pub trait Event {
fn event(&self);
}
pub struct Space<T> {
item: T,
}
impl<T: Event> Space<T> {
pub fn new(item: T) -> Space<T> {
Space { item: item }
}
pub fn event(&self) {
&self.item.event();
}
}
每种类型的空间都实现了一个特征,要求它有一个“事件”方法,通用空间结构可以调用该方法。然后我有一个 Game 结构,它将包含某种空间集合(除其他外)。
pub struct Game {
spaces: Vec<Space>, // Does not work
}
很遗憾,我在创建此集合时遇到了问题。无论我尝试哪一个,它都告诉我必须为 Space 指定一个类型参数。如何制作通用类型的结构集合?如果我可以通过索引拉出特定空间会更好,因为当我开始实现某些Chance 卡时,这将更容易将您移动到稍后的特定空间。抱歉,如果我遗漏了一些明显的东西,我是 Rust 的新手,所以我不一定知道要寻找什么。
【问题讨论】:
标签: list generics collections rust