使结构数组仅适用于某些数组大小

时间:2017-06-18 20:49:08

标签: arrays struct rust

我制作了一个简单的结构并为其实现了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。

0 个答案:

没有答案