首页 > 解决方案 > 并行迭代和处理元组的字段

问题描述

slice 方法split_at_mut返回 2 个子切片的元组。我想使用Rayon板条箱并行处理它们,par_iter()但该迭代器不支持元组迭代。

我想过将 2 的元组转换为列表然后应用par_iter(),但我还没有找到任何将元组转换为切片或向量的语法。那么如何并行处理元组呢?

标签: rust

解决方案


最简单的方法可能是不使用par_iter,而是调用spawn两次,可能在 a 内scope

fn doit(v: &mut [i32]) {
    for x in v.iter_mut() {
        *x *= 2;
    }
}

fn main() {
    let mut data = vec![1, 2, 3, 4];
    rayon::scope(|s| {
        let mid = data.len() / 2;
        let (a, b) = data.split_at_mut(mid);
        s.spawn(move |_| doit(a));
        s.spawn(move |_| doit(b));
    });
}

操场


推荐阅读