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
特性就像一个符咒。