Параллельная итерация и обработка полей кортежа в R - PullRequest
0 голосов
/ 24 октября 2019

Метод массива Rust split_at_mut возвращает кортеж из 2 подмассивов. Я хочу обрабатывать их параллельно, используя Rayon crate par_iter(). Но этот итератор не поддерживает итерацию кортежа.

Я думаю о преобразовании кортежа 2 в список и последующем применении par_iter(), но до сих пор я не нашел никакого синтаксиса для преобразования кортежа в массив или вектор,Так как мне параллельно обрабатывать кортеж?

1 Ответ

2 голосов
/ 24 октября 2019

Самый простой способ сделать это, вероятно, не использовать par_iter, а вместо этого дважды вызвать spawn, возможно внутри 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));
    });
}

Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...