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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从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
}

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

答案

循环是可以的,它们通常非常好地优化。

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

以上是关于从Rust中的迭代器填充切片的最佳方法是什么? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Rust中的迭代器的使用:map转换filter过滤fold聚合chain链接

从 rust 中的通道迭代器获取第一个接收到的值

A *:Rust中的打开和关闭列表[关闭]

Python进阶:迭代器与迭代器切片

Rust中的迭代器

Rust:如何在第一个 Err 或 None 上短路退出迭代器方法链?