如何使用 rayon 进行枚举迭代?

4 multithreading iterator for-loop rust rayon

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

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

for (index, val) in x.iter().enumerate() {
    println!("{} {}", val, index);
}
Run Code Online (Sandbox Code Playgroud)

现在,据我所知,对于人造丝,并行迭代par_iter()不支持枚举,因为它具有ParallelIterator.

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

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

kfe*_*v91 5

当您通过调用ParallelIterator从 a创建 a 时,它同时也是 an ,因此您可以调用它来获取项目索引,如下所示:Vecpar_iter()IndexedParallelIteratorenumerate()

// 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);
    });
}
Run Code Online (Sandbox Code Playgroud)

操场