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

时间:2017-07-06 03:59:38

标签: optimization iterator copy rust slice

我正在为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
}

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

1 个答案:

答案 0 :(得分:1)

循环正常,它们通常可以很好地优化。

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