Arrays 初始化结构的固定大小数组

Arrays 初始化结构的固定大小数组,arrays,struct,initialization,rust,Arrays,Struct,Initialization,Rust,我想用给定的规则自动初始化一个自定义结构数组 对于实现Copy的基本类型和类型,我将执行类似let x:[u8;5]=[0;5],但对于无法派生复制的类型,我必须做其他事情 我可能可以写下整个列表,但这很不方便,特别是如果我只需要稍后更改的伪值,这相当于初始化一个带零的整数数组 我尝试过这样的循环 use std::collections::LinkedList; enum CourseType { Dummy1, Dummy2, } struct Week { nu

我想用给定的规则自动初始化一个自定义结构数组

对于实现
Copy
的基本类型和类型,我将执行类似
let x:[u8;5]=[0;5],但对于无法派生
复制的类型,我必须做其他事情

我可能可以写下整个列表,但这很不方便,特别是如果我只需要稍后更改的伪值,这相当于初始化一个带零的整数数组

我尝试过这样的
循环

use std::collections::LinkedList;

enum CourseType {
    Dummy1,
    Dummy2,
}

struct Week {
    number: u64,
    days: [Day; 5], //Mo-Fr
}

struct Day {
    courses: LinkedList<Course>, // LinkedList prevents Copy
}

struct Course {
    beginning: u8,
    courseType: CourseType,
}

fn get_weeks() -> Option<Vec<Week>> {
    let mut weeks = Vec::with_capacity(20);
    for i in 1..14 {
        let week = Week {
            number: i,
            days: {
                let mut ret: [Day; 5]; // definition of the array
                for i in 0..4 {
                    // loop to initialize
                    ret[i] = Day {
                        courses: LinkedList::new(),
                    } //error[E0381]
                }
                ret //error[E0381]
            },
        };
        weeks.push(week);
    }
    Some(weeks)
}
如何初始化这种数组

在这种情况下,我有固定大小的数据,因为(工作)周只有5天。使用动态类型(如向量)似乎不精确。我以前尝试过元组,但是我遇到了一个类似的问题,我必须迭代元组索引。用变量(比如
tuple.index
而不是
tuple.3
)来处理索引似乎是不可能的(对于变量)


也许我必须使用某种切片(
&[Day;5]
)而不是数组,但我想我对锈病的理解还不太清楚。

正如副本中所建议的那样,。另外,我还想了解更多信息。谢谢在我的例子中,
Default
trait就像一个符咒一样起作用。正如在副本中所建议的那样,。并且为了传递更多的信息。谢谢在我的例子中,
Default
特性就像一个符咒。