Trait rayon::iter::plumbing::Consumer [−][src]
pub trait Consumer<Item>: Send + Sized { type Folder: Folder<Item, Result = Self::Result>; type Reducer: Reducer<Self::Result>; type Result: Send; fn split_at(self, index: usize) -> (Self, Self, Self::Reducer); fn into_folder(self) -> Self::Folder; fn full(&self) -> bool; }
Expand description
A consumer is effectively a generalized “fold” operation,
and in fact each consumer will eventually be converted into a
Folder
. What makes a consumer special is that, like a
Producer
, it can be split into multiple consumers using
the split_at
method. When a consumer is split, it produces two
consumers, as well as a reducer. The two consumers can be fed
items independently, and when they are done the reducer is used to
combine their two results into one. See the plumbing
README for further details.
Associated Types
type Folder: Folder<Item, Result = Self::Result>
[src]
Expand description
The type of folder that this consumer can be converted into.
type Reducer: Reducer<Self::Result>
[src]
Expand description
The type of reducer that is produced if this consumer is split.
type Result: Send
[src]
Expand description
The type of result that this consumer will ultimately produce.
Required methods
fn split_at(self, index: usize) -> (Self, Self, Self::Reducer)
[src]
Expand description
Divide the consumer into two consumers, one processing items
0..index
and one processing items from index..
. Also
produces a reducer that can be used to reduce the results at
the end.
fn into_folder(self) -> Self::Folder
[src]
Expand description
Convert the consumer into a folder that can consume items sequentially, eventually producing a final result.
fn full(&self) -> bool
[src]
Expand description
Hint whether this Consumer
would like to stop processing
further items, e.g. if a search has been completed.