Trait orx_parallel::IntoPar
source · pub trait IntoPar {
type ConIter: ConcurrentIter;
// Required method
fn into_par(self) -> ParEmpty<Self::ConIter>;
}
Expand description
Conversion into a parallel iterator.
Every type implementing orx_concurrent_iter::ConcurrentIter
or orx_concurrent_iter::IntoConcurrentIter
also implements IntoPar
.
These types include common collections/views such as range, vector or slice.
See crate::IterIntoPar
for conversion of any regular iterator into parallel iterator.
Converting into a parallel iterator is achieved using the into_par()
method.
§Examples
use orx_parallel::*;
let seq: usize = (0..1024).sum();
let par = (0..1024).into_par().sum();
assert_eq!(par, seq);
let seq = vec![10; 42].into_iter().sum();
let par = vec![10; 42].into_par().sum();
assert_eq!(par, seq);
let seq = (10..420).filter(|x| x % 2 == 1).map(|x| 2 * x).sum();
let par = (10..420).into_par().filter(|x| x % 2 == 1).map(|x| 2 * x).sum();
assert_eq!(par, seq);
let names = ["john", "doe", "foo", "bar"].map(String::from);
let seq = names.iter().map(|x| x.len()).reduce(|a, b| a + b);
let par = names.as_slice().into_par().map(|x| x.len()).reduce(|a, b| a + b);
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 into_par(self) -> ParEmpty<Self::ConIter>
fn into_par(self) -> ParEmpty<Self::ConIter>
Conversion into a parallel iterator.
Every type implementing orx_concurrent_iter::ConcurrentIter
or orx_concurrent_iter::IntoConcurrentIter
also implements IntoPar
.
These types include common collections/views such as range, vector or slice.
See crate::IterIntoPar
for conversion of any regular iterator into parallel iterator.
Converting into a parallel iterator is achieved using the into_par()
method.
§Examples
use orx_parallel::*;
let seq = vec![10; 42].into_iter().sum();
let par = vec![10; 42].into_par().sum();
assert_eq!(par, seq);
let seq = (10..420).filter(|x| x % 2 == 1).map(|x| 2 * x).sum();
let par = (10..420).into_par().filter(|x| x % 2 == 1).map(|x| 2 * x).sum();
assert_eq!(par, seq);
let names = ["john", "doe", "foo", "bar"].map(String::from);
let seq = names.iter().map(|x| x.len()).reduce(|a, b| a + b);
let par = names.as_slice().into_par().map(|x| x.len()).reduce(|a, b| a + b);
assert_eq!(par, seq);