Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 如何部分初始化ArrayVec?_Syntax_Rust_Initialization - Fatal编程技术网

Syntax 如何部分初始化ArrayVec?

Syntax 如何部分初始化ArrayVec?,syntax,rust,initialization,Syntax,Rust,Initialization,我需要具有固定最大尺寸的结构,因此显而易见的选择似乎是。但是,当ArrayVec是以后需要部分初始化的结构的成员时,我被卡住了: use arrayvec::ArrayVec; // 0.4.7 #[derive(Debug)] struct Test { member_one: Option<u32>, member_two: ArrayVec<[u16; 5]>, } pub fn main() { let mut test = Test

我需要具有固定最大尺寸的结构,因此显而易见的选择似乎是。但是,当
ArrayVec
是以后需要部分初始化的结构的成员时,我被卡住了:

use arrayvec::ArrayVec; // 0.4.7

#[derive(Debug)]
struct Test {
    member_one: Option<u32>,
    member_two: ArrayVec<[u16; 5]>,
}

pub fn main() {
    let mut test = Test {
        member_one: Some(45678),
        member_two: [1, 2, 3], // <- What to do here to initialise only 3 elements?
    };

    print!("{:?}", test);
}
使用arrayvec::arrayvec;//0.4.7
#[导出(调试)]
结构测试{
成员一:选择,
成员二:ArrayVec,
}
pub fn main(){
让mut测试=测试{
成员一:一些(45678),

成员二:[1,2,3],//
ArrayVec
不提供一步完成此操作的方法。相反,请创建
ArrayVec
,然后以任何可以添加值的方式向其添加值:

let mut member_two = ArrayVec::new();
member_two.extend([1, 2, 3].iter().cloned());
let test = Test {
    member_one: Some(45678),
    member_two, 
};

您可以从迭代器收集到
ArrayVec

let mut test = Test {
    member_one: Some(45678),
    member_two: [1, 2, 3].iter().cloned().collect(),
};

看起来ArrayVec严重短缺,但你的建议就行了。太好了,效果很好-省去了我很多头疼!新年快乐!