如何使用枚举作为数组元素?

How do I use an enum as array element?

我对这段代码无法编译感到有点惊讶。作为 Rust 的新手,我当然可能犯了一些愚蠢的错误...

mod board {
    enum Square {
        Empty,
        Black,
        White
    }

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

main.rs:10:9: 10:27 error: the trait core::marker::Copy is not implemented for the type board::Square [E0277] main.rs:10 [Square::Empty; 9]

或者是语言的非特性不允许枚举作为数组元素类型?

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

这个有效:

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

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