我对此代码无法编译感到有点惊讶。作为Rust的新手,我当然可能会犯一些愚蠢的错误......
mod board {
enum Square {
Empty,
Black,
White
}
fn init () -> [Square;9] {
[Square::Empty; 9]
}
}
main.rs:10:9:10:27错误:特征
core::marker::Copy
未实现 类型board::Square
[E0277] main.rs:10 [Square :: Empty; 9]
或者它是一种语言非特征,枚举不允许作为数组元素类型吗?
答案 0 :(得分:7)
数组初始化语法[T; N]
要求T
实现Copy
,以便它可以将提供的值复制到数组中的每个位置。
这有效:
mod board {
#[derive(Copy)]
enum Square {
Empty,
Black,
White
}
fn init () -> [Square;9] {
[Square::Empty; 9]
}
}
fn main() {}