这个问题在这里已有答案:
我尝试编写战列舰的纸质游戏,其中战场是枚举阵列。我找不到初始化数组的方法。
enum Tile {
Water,
Debris,
Ship(Rc<Ship>),
}
fn main() {
let mut a = [[Tile::Water; 10]; 10]; //Tile::Water doesn't implement Copy (the compiler is dumb)
let mut b: [[Tile; 10]; 10];
for i in 1..10 {
for j in 1..10 {
b[i][j] = Tile::Water;
}
} //use of possibly uninitialized b (I'm trying to initialize it)
}
如何才能做到这一点?我不是在寻找另一种游戏解决方案,这只是一个例子。
试试这个:
enum Tile {
Water,
Debris,
Ship(Rc<Ship>),
}
impl Default for Tile {
fn default() -> Self {
Tile::Water
}
}
fn main() {
let mut b: [[Tile; 10]; 10] = Default::default();
}