从Rust中的迭代器填充切片的最佳方法是什么?

Ini*_*tyx 6 optimization iterator copy slice rust

我执行FromIterator[MyStruct;4]其中MyStruct的一个小副本结构.我目前的实施是

fn from_iter<I: IntoIterator<Item=MyStruct>>(iter: I) -> Self {
    let mut retval = [Default::default();4];

    for (ret, src) in retval.iter_mut().zip(iter) {
        *ret = src;
    }

    retval
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但我不确定for循环是否像惯用的那样.是否有类似的方法Slice::fill(iter)可以更干净地(也许更有效)实现这一目标?

Kor*_*nel 1

循环还可以,而且通常优化得很好。

另一种解决方案可能是collect()进入ArrayVec. 它避免了必须先用默认值填充数组。