2015-04-03 62 views
1

我有點驚訝,這段代碼不會編譯。作爲新生鏽,有可能我做了,當然一些愚蠢的錯誤...如何使用enum作爲數組元素?

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]

或者是一個語言的非功能,枚舉不允許作爲數組元素類型?

回答

6

數組初始化語法[T; N]要求T實現Copy,以便它可以將提供的值複製到數組中的每個位置。

這工作:

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

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

fn main() {} 
+1

請注意,我需要克隆添加到導出爲它工作。 '#[導出(複製,克隆)]' – agmcleod 2015-12-06 18:09:02

相關問題