ParOption

Struct ParOption 

Source
pub struct ParOption<F, T, R = DefaultRunner>
where R: ParallelRunner, F: ParIterResult<R, Item = T, Err = ()>,
{ /* private fields */ }
Expand description

A parallel iterator for which the computation either completely succeeds, or fails and early exits with None.

Trait Implementations§

Source§

impl<F, T, R> ParIterOption<R> for ParOption<F, T, R>
where R: ParallelRunner, F: ParIterResult<R, Item = T, Err = ()>,

Source§

type Item = T

Type of the success element, to be received as the Some variant iff the entire computation succeeds.
Source§

fn num_threads(self, num_threads: impl Into<NumThreads>) -> Self

Sets the number of threads to be used in the parallel execution. Integers can be used as the argument with the following mapping: Read more
Source§

fn chunk_size(self, chunk_size: impl Into<ChunkSize>) -> Self

Sets the number of elements to be pulled from the concurrent iterator during the parallel execution. When integers are used as argument, the following mapping applies: Read more
Source§

fn iteration_order(self, order: IterationOrder) -> Self

Sets the iteration order of the parallel computation. Read more
Source§

fn with_runner<Q: ParallelRunner>( self, orchestrator: Q, ) -> impl ParIterOption<Q, Item = Self::Item>

Rather than the DefaultRunner, uses the parallel runner Q which implements ParallelRunner. Read more
Source§

fn map<Out, Map>(self, map: Map) -> impl ParIterOption<R, Item = Out>
where Map: Fn(Self::Item) -> Out + Sync + Clone, Out: Send,

Takes a closure map and creates a parallel iterator which calls that closure on each element. Read more
Source§

fn filter<Filter>( self, filter: Filter, ) -> impl ParIterOption<R, Item = Self::Item>
where Self: Sized, Filter: Fn(&Self::Item) -> bool + Sync + Clone, Self::Item: Send,

Creates an iterator which uses a closure filter to determine if an element should be yielded. Read more
Source§

fn flat_map<IOut, FlatMap>( self, flat_map: FlatMap, ) -> impl ParIterOption<R, Item = IOut::Item>
where Self: Sized, IOut: IntoIterator, IOut::Item: Send, FlatMap: Fn(Self::Item) -> IOut + Sync + Clone,

Creates an iterator that works like map, but flattens nested structure. Read more
Source§

fn filter_map<Out, FilterMap>( self, filter_map: FilterMap, ) -> impl ParIterOption<R, Item = Out>
where Self: Sized, FilterMap: Fn(Self::Item) -> Option<Out> + Sync + Clone, Out: Send,

Creates an iterator that both filters and maps. Read more
Source§

fn inspect<Operation>( self, operation: Operation, ) -> impl ParIterOption<R, Item = Self::Item>
where Self: Sized, Operation: Fn(&Self::Item) + Sync + Clone, Self::Item: Send,

Does something with each successful element of an iterator, passing the value on, provided that all elements are of Some variant; short-circuits and returns None otherwise. Read more
Source§

fn collect_into<C>(self, output: C) -> Option<C>
where Self::Item: Send, C: ParCollectInto<Self::Item>,

Collects all the items from an iterator into a collection iff all elements are of Some variant. Early exits and returns None if any of the elements is None. Read more
Source§

fn collect<C>(self) -> Option<C>
where Self::Item: Send, C: ParCollectInto<Self::Item>,

Transforms an iterator into a collection iff all elements are of Ok variant. Early exits and returns the error if any of the elements is an Err. Read more
Source§

fn reduce<Reduce>(self, reduce: Reduce) -> Option<Option<Self::Item>>
where Self::Item: Send, Reduce: Fn(Self::Item, Self::Item) -> Self::Item + Sync,

Reduces the elements to a single one, by repeatedly applying a reducing operation. Early exits and returns None if any of the elements is None. Read more
Source§

fn first(self) -> Option<Option<Self::Item>>
where Self::Item: Send,

Returns the first (or any) element of the iterator. If the iterator is empty, Some(None) is returned. Early exits and returns None if a None element is observed first. Read more
Source§

fn with_pool<P: ParThreadPool>( self, pool: P, ) -> impl ParIterOption<RunnerWithPool<P, R::Executor>, Item = Self::Item>
where Self: Sized,

Rather than DefaultPool, uses the parallel runner with the given pool implementing ParThreadPool. Read more
Source§

fn all<Predicate>(self, predicate: Predicate) -> Option<bool>
where Self: Sized, Self::Item: Send, Predicate: Fn(&Self::Item) -> bool + Sync,

Tests if every element of the iterator matches a predicate. Early exits and returns None if any of the elements is None. Read more
Source§

fn any<Predicate>(self, predicate: Predicate) -> Option<bool>
where Self: Sized, Self::Item: Send, Predicate: Fn(&Self::Item) -> bool + Sync,

Tests if any element of the iterator matches a predicate. Early exits and returns None if any of the elements is None. Read more
Source§

fn count(self) -> Option<usize>
where Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Early exits and returns None if any of the elements is None. Read more
Source§

fn for_each<Operation>(self, operation: Operation) -> Option<()>
where Self: Sized, Operation: Fn(Self::Item) + Sync,

Calls a closure on each element of an iterator, and returns Ok(()) if all elements succeed. Early exits and returns None if any of the elements is None. Read more
Source§

fn max(self) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Ord + Send,

Returns Some of maximum element of an iterator if all elements succeed. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn max_by<Compare>(self, compare: Compare) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Send, Compare: Fn(&Self::Item, &Self::Item) -> Ordering + Sync,

Returns the element that gives the maximum value with respect to the specified compare function. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn max_by_key<Key, GetKey>(self, key: GetKey) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Send, Key: Ord, GetKey: Fn(&Self::Item) -> Key + Sync,

Returns the element that gives the maximum value from the specified function. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn min(self) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Ord + Send,

Returns Some of minimum element of an iterator if all elements succeed. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn min_by<Compare>(self, compare: Compare) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Send, Compare: Fn(&Self::Item, &Self::Item) -> Ordering + Sync,

Returns the element that gives the minimum value with respect to the specified compare function. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn min_by_key<Key, GetKey>(self, get_key: GetKey) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Send, Key: Ord, GetKey: Fn(&Self::Item) -> Key + Sync,

Returns the element that gives the minimum value from the specified function. If the iterator is empty, Some(None) is returned. Early exits and returns None if any of the elements is None. Read more
Source§

fn sum<Out>(self) -> Option<Out>
where Self: Sized, Self::Item: Sum<Out>, Out: Send,

Sums the elements of an iterator. Early exits and returns None if any of the elements is None. Read more
Source§

fn find<Predicate>(self, predicate: Predicate) -> Option<Option<Self::Item>>
where Self: Sized, Self::Item: Send, Predicate: Fn(&Self::Item) -> bool + Sync,

Returns the first (or any) element of the iterator that satisfies the predicate. If the iterator is empty, Some(None) is returned. Early exits and returns None if a None element is observed first. Read more

Auto Trait Implementations§

§

impl<F, T, R> Freeze for ParOption<F, T, R>
where F: Freeze,

§

impl<F, T, R> RefUnwindSafe for ParOption<F, T, R>

§

impl<F, T, R> Send for ParOption<F, T, R>
where F: Send, T: Send, R: Send,

§

impl<F, T, R> Sync for ParOption<F, T, R>
where F: Sync, T: Sync, R: Sync,

§

impl<F, T, R> Unpin for ParOption<F, T, R>
where F: Unpin, T: Unpin, R: Unpin,

§

impl<F, T, R> UnwindSafe for ParOption<F, T, R>
where F: UnwindSafe, T: UnwindSafe, R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> SoM<T> for T

Source§

fn get_ref(&self) -> &T

Returns a reference to self.
Source§

fn get_mut(&mut self) -> &mut T

Returns a mutable reference to self.
Source§

impl<T> SoR<T> for T

Source§

fn get_ref(&self) -> &T

Returns a reference to self.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Erased for T