如何使用人造丝进行枚举迭代?
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);
});
}
我可以迭代和处理索引和其中的变量,例如:
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);
});
}