我制作了一个简单的结构并为其实现了Default
:
#[derive(Clone, Copy)]
struct LifeCell {
state: usize
}
impl Default for LifeCell {
fn default() -> LifeCell {
LifeCell {
state: 0
}
}
}
我试图创建一系列这样的结构:
const TOTAL_CELLS: usize = 20;
let mut new_field: [[LifeCell; TOTAL_CELLS]; TOTAL_CELLS] = Default::default();
这个编译没问题,直到我将TOTAL_CELLS
设置为35.然后它没有编译错误:
error[E0277]: the trait bound `[[LifeCell; 35]; 35]: std::default::Default` is not satisfied
--> src/main.rs:14:65
|
14 | let mut new_field: [[LifeCell; TOTAL_CELLS]; TOTAL_CELLS] = Default::default();
| ^^^^^^^^^^^^^^^^ the trait `std::default::Default` is not implemented for `[[LifeCell; 35]; 35]`
|
= help: the following implementations were found:
<&'a [T] as std::default::Default>
<&'a mut [T] as std::default::Default>
<[T; 32] as std::default::Default>
<[T; 31] as std::default::Default>
and 31 others
= note: required by `std::default::Default::default`
我知道它的原因 - 目前,Default
特征仅适用于最大为32的数组。但是,如果我需要一个比这个更大的结构数组,我该怎么办? / p>
我正在使用Rust 1.18.0。