如何将枚举用作数组元素?

时间:2015-04-03 17:25:20

标签: rust

我对此代码无法编译感到有点惊讶。作为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]

或者它是一种语言非特征,枚举不允许作为数组元素类型吗?

1 个答案:

答案 0 :(得分:7)

数组初始化语法[T; N]要求T实现Copy,以便它可以将提供的值复制到数组中的每个位置。

这有效:

mod board {
    #[derive(Copy)]
    enum Square {
        Empty,
        Black,
        White
    }

    fn init () -> [Square;9] {
        [Square::Empty; 9]
    }
}

fn main() {}