Trait orx_parallel::IterIntoPar
source · pub trait IterIntoPar<Iter: Iterator>{
type ConIter: ConcurrentIter;
// Required method
fn par(self) -> ParEmpty<Self::ConIter>;
}
Expand description
Conversion into a parallel iterator.
Every regular iterator implementing Iterator
also implements IterIntoPar
.
See crate::IntoPar
for conversion of common collections into parallel iterator.
Converting into a parallel iterator is achieved using the par()
method.
§Examples
use orx_parallel::*;
let numbers = || (0..24).filter(|x| x % 2 == 0);
let seq: usize = numbers().sum();
let par = numbers().par().sum();
assert_eq!(seq, par);
let numbers: Vec<_> = (10..420).collect();
let iter = || numbers.iter().cloned().skip(10);
let seq: Vec<_> = iter()
.filter(|x| x % 3 == 1)
.map(|x| x * 4)
.filter(|x| x < &456)
.flat_map(|x| [x, x + 1, x * 7])
.collect();
let par = iter()
.par()
.filter(|x| x % 3 == 1)
.map(|x| x * 4)
.filter(|x| x < &456)
.flat_map(|x| [x, x + 1, x * 7])
.collect_vec();
assert_eq!(par, seq);
Required Associated Types§
sourcetype ConIter: ConcurrentIter
type ConIter: ConcurrentIter
Underlying concurrent iterator which provides the input elements to the defined parallel computation.
Required Methods§
sourcefn par(self) -> ParEmpty<Self::ConIter>
fn par(self) -> ParEmpty<Self::ConIter>
Conversion into a parallel iterator.
Every regular iterator implementing Iterator
also implements IterIntoPar
.
See crate::IntoPar
for conversion of common collections into parallel iterator.
Converting into a parallel iterator is achieved using the par()
method.
§Examples
use orx_parallel::*;
let numbers = || (0..24).filter(|x| x % 2 == 0);
let seq: usize = numbers().sum();
let par = numbers().par().sum();
assert_eq!(seq, par);
let numbers: Vec<_> = (10..420).collect();
let iter = || numbers.iter().cloned().skip(10);
let seq: Vec<_> = iter()
.filter(|x| x % 3 == 1)
.map(|x| x * 4)
.filter(|x| x < &456)
.flat_map(|x| [x, x + 1, x * 7])
.collect();
let par = iter()
.par()
.filter(|x| x % 3 == 1)
.map(|x| x * 4)
.filter(|x| x < &456)
.flat_map(|x| [x, x + 1, x * 7])
.collect_vec();
assert_eq!(par, seq);