我需要具有固定最大尺寸的结构,所以显而易见的选择似乎是“AA>”。但是,当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的前三个元素,因为它完全可以容纳从0到5的任意数量的元素(在我的示例中),但我不知道如何实现。

最佳答案

您可以从迭代器收集到ArrayVec

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

07-27 19:51