rayon并行迭代器
使用rayon库将普通迭代器转换为并行迭代器,轻松实现数据并行处理。 · 难度:入门 · +15XP
rayon并行迭代器
rayon 库通过 .par_iter() 将顺序迭代转换为并行迭代,自动利用多核CPU。它支持 map、filter、reduce 等常见操作。适合CPU密集型任务,但注意并行开销和数据竞争。Cargo.toml 需添加 rayon = "1" 依赖。
use rayon::prelude::*;
fn main() {
let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 并行计算平方和
let sum_of_squares: i32 = numbers
.par_iter() // 并行迭代器
.map(|&x| x * x)
.sum();
println!("Sum of squares: {}", sum_of_squares);
// 并行过滤偶数并乘以2
let result: Vec = numbers
.par_iter()
.filter(|&&x| x % 2 == 0)
.map(|&x| x * 2)
.collect();
println!("Filtered even numbers doubled: {:?}", result);
}