如何使用人造丝进行枚举迭代?

How to iterate with enumeration using rayon?

我可以迭代和处理索引和其中的变量,例如:

let x = vec![5, 6, 7, 8];

for (index, val) in x.iter().enumerate() {
    println!("{} {}", val, index);
}

现在使用人造丝,据我所知,通过 par_iter() 的并行迭代不支持枚举,因为它有 ParallelIterator.

Rayon 似乎有 IndexedParallelIterator,但我不确定如何使用它来产生与上面所示的简单 for 循环类似的结果。

在并行迭代时,有没有办法跟踪每个值的索引?简单的 for 循环会是什么样子?

当您在其上创建 ParallelIterator from a Vec by calling par_iter() it's also simultaneously an IndexedParallelIterator so you can call enumerate() 以获取项目索引时,如下所示:

// rayon = "1.5"
use rayon::prelude::*;

fn main() {
    let x = vec![5, 6, 7, 8];
    x.par_iter().enumerate().for_each(|(index, val)| {
        println!("{} {}", val, index);
    });
}

playground