pub trait ParallelizableCollection: ConcurrentCollection {
// Provided method
fn par(&self) -> Par<<Self::Iterable<'_> as ConcurrentIterable>::Iter> { ... }
}Expand description
A type implementing ParallelizableCollection is a collection owning the elements such that
- if the elements are of type
T, - non-consuming
parmethod can be called multiple times to create parallel iterators; i.e.,ParIter, yielding references to the elements&T; and - consuming
into_parmethod can be called once to create a parallel iterator yielding owned elementsT.
This trait can be considered as the concurrent counterpart of the Collection trait.
Note that every ConcurrentCollection type automatically implements ParallelizableCollection.
§Examples
use orx_parallel::*;
// Vec<T>: ParallelizableCollection<Item = T>
let vec = vec![1, 2, 3, 4];
// non-consuming iteration over references
assert_eq!(vec.par().sum(), 10);
assert_eq!(vec.par().min(), Some(&1));
assert_eq!(vec.par().max(), Some(&4));
// consuming iteration over owned values
assert_eq!(vec.into_par().max(), Some(4));Provided Methods§
Sourcefn par(&self) -> Par<<Self::Iterable<'_> as ConcurrentIterable>::Iter>
fn par(&self) -> Par<<Self::Iterable<'_> as ConcurrentIterable>::Iter>
A type implementing ParallelizableCollection is a collection owning the elements such that
- if the elements are of type
T, - non-consuming
parmethod can be called multiple times to create parallel iterators; i.e.,ParIter, yielding references to the elements&T; and - consuming
into_parmethod can be called once to create a parallel iterator yielding owned elementsT.
This trait can be considered as the concurrent counterpart of the Collection trait.
Note that every ConcurrentCollection type automatically implements ParallelizableCollection.
§Examples
use orx_parallel::*;
// Vec<T>: ParallelizableCollection<Item = T>
let vec = vec![1, 2, 3, 4];
// non-consuming iteration over references
assert_eq!(vec.par().sum(), 10);
assert_eq!(vec.par().min(), Some(&1));
assert_eq!(vec.par().max(), Some(&4));
// consuming iteration over owned values
assert_eq!(vec.into_par().max(), Some(4));Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.