【问题标题】:What is the best way to fill a slice from an iterator in Rust? [duplicate]从 Rust 中的迭代器填充切片的最佳方法是什么? [复制]
【发布时间】:2017-12-09 21:50:56
【问题描述】:

我正在为[MyStruct;4] 实现FromIterator,其中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) 这样的方法可以更干净地完成此任务(也许更有效)?

【问题讨论】:

  • 也许你可以使用普通的、旧的map

标签: optimization iterator copy rust slice


【解决方案1】:

循环没问题,它们通常优化得很好。

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

【讨论】:

    猜你喜欢
    • 2015-12-18
    • 2016-05-05
    • 1970-01-01
    • 2016-05-25
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2012-04-22
    相关资源
    最近更新 更多