pub enum GenericIterator<T, S, R, O>{
Sequential(S),
Rayon(R),
Orx(O),
}
Expand description
An iterator that generalizes over:
- sequential iterators,
- rayon’s parallel iterators, and
- orx-parallel’s parallel iterators.
This is particularly useful for enabling a convenient way to run experiments using these different computation approaches.
Variants§
Sequential(S)
Sequential, or regular, iterator.
Rayon(R)
rayon’s parallel iterator.
Orx(O)
orx-parallel’s parallel iterator.
Implementations§
Source§impl<T, S, R, O> GenericIterator<T, S, R, O>
impl<T, S, R, O> GenericIterator<T, S, R, O>
Sourcepub fn collect_vec(self) -> Vec<T>
pub fn collect_vec(self) -> Vec<T>
Collects the elements of the iterator into a vector.
See collect
for details of the general collect method.
Source§impl<T, S, R, O> GenericIterator<T, S, R, O>
impl<T, S, R, O> GenericIterator<T, S, R, O>
Source§impl<T, S> GenericIterator<T, S, Empty<T>, ParEmpty<T>>
impl<T, S> GenericIterator<T, S, Empty<T>, ParEmpty<T>>
Sourcepub fn sequential(iter: S) -> Self
pub fn sequential(iter: S) -> Self
Creates the generic iterator from sequential iterator variant.
Source§impl<T, R> GenericIterator<T, Empty<T>, R, ParEmpty<T>>
impl<T, R> GenericIterator<T, Empty<T>, R, ParEmpty<T>>
Source§impl<T, O> GenericIterator<T, Empty<T>, Empty<T>, O>
impl<T, O> GenericIterator<T, Empty<T>, Empty<T>, O>
Source§impl<T, S, R, O> GenericIterator<T, S, R, O>
impl<T, S, R, O> GenericIterator<T, S, R, O>
Sourcepub fn reduce<Reduce>(self, reduce: Reduce) -> Option<T>
pub fn reduce<Reduce>(self, reduce: Reduce) -> Option<T>
Reduction for the generic iterator.
See reduce
for details.
Sourcepub fn for_each<Operation>(self, operation: Operation)
pub fn for_each<Operation>(self, operation: Operation)
For-each iteration for the generic iterator.
See for_each
for details.
Sourcepub fn max(self) -> Option<T>where
T: Ord,
pub fn max(self) -> Option<T>where
T: Ord,
Max reduction for the generic iterator.
See max
for details.
Sourcepub fn max_by<Compare>(self, compare: Compare) -> Option<T>
pub fn max_by<Compare>(self, compare: Compare) -> Option<T>
Max-by reduction for the generic iterator.
See max_by
for details.
Sourcepub fn max_by_key<Key, GetKey>(self, key: GetKey) -> Option<T>
pub fn max_by_key<Key, GetKey>(self, key: GetKey) -> Option<T>
Max-by-key reduction for the generic iterator.
See max_by_key
for details.
Sourcepub fn min(self) -> Option<T>where
T: Ord,
pub fn min(self) -> Option<T>where
T: Ord,
Min reduction for the generic iterator.
See min
for details.
Sourcepub fn min_by<Compare>(self, compare: Compare) -> Option<T>
pub fn min_by<Compare>(self, compare: Compare) -> Option<T>
Min-by reduction for the generic iterator.
See min_by
for details.
Sourcepub fn min_by_key<Key, GetKey>(self, key: GetKey) -> Option<T>
pub fn min_by_key<Key, GetKey>(self, key: GetKey) -> Option<T>
Min-by-key reduction for the generic iterator.
See min_by_key
for details.
Source§impl<T, S, R, O> GenericIterator<T, S, R, O>
impl<T, S, R, O> GenericIterator<T, S, R, O>
Sourcepub fn map<Out, Map>(
self,
map: Map,
) -> GenericIterator<Out, impl Iterator<Item = Out>, impl ParallelIterator<Item = Out>, impl ParIter<Item = Out>>
pub fn map<Out, Map>( self, map: Map, ) -> GenericIterator<Out, impl Iterator<Item = Out>, impl ParallelIterator<Item = Out>, impl ParIter<Item = Out>>
Map transformation for the generic iterator.
See map
for details.
Sourcepub fn filter<Filter>(
self,
filter: Filter,
) -> GenericIterator<T, impl Iterator<Item = T>, impl ParallelIterator<Item = T>, impl ParIter<Item = T>>
pub fn filter<Filter>( self, filter: Filter, ) -> GenericIterator<T, impl Iterator<Item = T>, impl ParallelIterator<Item = T>, impl ParIter<Item = T>>
Filter transformation for the generic iterator.
See filter
for details.
Sourcepub fn flat_map<IOut, FlatMap>(
self,
flat_map: FlatMap,
) -> GenericIterator<<IOut as IntoIterator>::Item, impl Iterator<Item = <IOut as IntoIterator>::Item>, impl ParallelIterator<Item = <IOut as IntoIterator>::Item>, impl ParIter<Item = <IOut as IntoIterator>::Item>>where
IOut: IntoIterator + Send + Sync + IntoParallelIterator<Item = <IOut as IntoIterator>::Item>,
<IOut as IntoIterator>::IntoIter: Send + Sync,
<IOut as IntoIterator>::Item: Send + Sync,
FlatMap: Fn(T) -> IOut + Send + Sync + Clone,
pub fn flat_map<IOut, FlatMap>(
self,
flat_map: FlatMap,
) -> GenericIterator<<IOut as IntoIterator>::Item, impl Iterator<Item = <IOut as IntoIterator>::Item>, impl ParallelIterator<Item = <IOut as IntoIterator>::Item>, impl ParIter<Item = <IOut as IntoIterator>::Item>>where
IOut: IntoIterator + Send + Sync + IntoParallelIterator<Item = <IOut as IntoIterator>::Item>,
<IOut as IntoIterator>::IntoIter: Send + Sync,
<IOut as IntoIterator>::Item: Send + Sync,
FlatMap: Fn(T) -> IOut + Send + Sync + Clone,
Flat-map transformation for the generic iterator.
See flat_map
for details.
Sourcepub fn filter_map<Out, FilterMap>(
self,
filter_map: FilterMap,
) -> GenericIterator<Out, impl Iterator<Item = Out>, impl ParallelIterator<Item = Out>, impl ParIter<Item = Out>>
pub fn filter_map<Out, FilterMap>( self, filter_map: FilterMap, ) -> GenericIterator<Out, impl Iterator<Item = Out>, impl ParallelIterator<Item = Out>, impl ParIter<Item = Out>>
Filter-map transformation for the generic iterator.
See filter_map
for details.
Sourcepub fn inspect<Operation>(
self,
operation: Operation,
) -> GenericIterator<T, impl Iterator<Item = T>, impl ParallelIterator<Item = T>, impl ParIter<Item = T>>
pub fn inspect<Operation>( self, operation: Operation, ) -> GenericIterator<T, impl Iterator<Item = T>, impl ParallelIterator<Item = T>, impl ParIter<Item = T>>
Inspect transformation for the generic iterator.
See inspect
for details.
Sourcepub fn flatten(
self,
) -> GenericIterator<<T as IntoIterator>::Item, impl Iterator<Item = <T as IntoIterator>::Item>, impl ParallelIterator<Item = <T as IntoIterator>::Item>, impl ParIter<Item = <T as IntoIterator>::Item>>where
T: IntoIterator + IntoParallelIterator<Item = <T as IntoIterator>::Item>,
<T as IntoIterator>::IntoIter: Send + Sync,
<T as IntoIterator>::Item: Send + Sync,
R: Send + Sync,
Self: Send + Sync,
pub fn flatten(
self,
) -> GenericIterator<<T as IntoIterator>::Item, impl Iterator<Item = <T as IntoIterator>::Item>, impl ParallelIterator<Item = <T as IntoIterator>::Item>, impl ParIter<Item = <T as IntoIterator>::Item>>where
T: IntoIterator + IntoParallelIterator<Item = <T as IntoIterator>::Item>,
<T as IntoIterator>::IntoIter: Send + Sync,
<T as IntoIterator>::Item: Send + Sync,
R: Send + Sync,
Self: Send + Sync,
Flatten transformation for the generic iterator.
See flatten
for details.
Source§impl<'a, T, S, R, O> GenericIterator<&'a T, S, R, O>
impl<'a, T, S, R, O> GenericIterator<&'a T, S, R, O>
Sourcepub fn copied(
self,
) -> GenericIterator<T, impl Iterator<Item = T> + use<'a, T, S, R, O>, impl ParallelIterator<Item = T> + use<'a, T, S, R, O>, impl ParIter<Item = T> + use<'a, T, S, R, O>>
pub fn copied( self, ) -> GenericIterator<T, impl Iterator<Item = T> + use<'a, T, S, R, O>, impl ParallelIterator<Item = T> + use<'a, T, S, R, O>, impl ParIter<Item = T> + use<'a, T, S, R, O>>
Copied transformation for the generic iterator.
See copied
for details.
Sourcepub fn cloned(
self,
) -> GenericIterator<T, impl Iterator<Item = T> + use<'a, T, S, R, O>, impl ParallelIterator<Item = T> + use<'a, T, S, R, O>, impl ParIter<Item = T> + use<'a, T, S, R, O>>
pub fn cloned( self, ) -> GenericIterator<T, impl Iterator<Item = T> + use<'a, T, S, R, O>, impl ParallelIterator<Item = T> + use<'a, T, S, R, O>, impl ParIter<Item = T> + use<'a, T, S, R, O>>
Cloned transformation for the generic iterator.
See cloned
for details.
Auto Trait Implementations§
impl<T, S, R, O> Freeze for GenericIterator<T, S, R, O>
impl<T, S, R, O> RefUnwindSafe for GenericIterator<T, S, R, O>
impl<T, S, R, O> Send for GenericIterator<T, S, R, O>where
S: Send,
impl<T, S, R, O> Sync for GenericIterator<T, S, R, O>
impl<T, S, R, O> Unpin for GenericIterator<T, S, R, O>
impl<T, S, R, O> UnwindSafe for GenericIterator<T, S, R, O>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more