[][src]Trait asparit::Producer

pub trait Producer: WithSetup + Send + Sized {
    type Item;
    type IntoIter: Iterator<Item = Self::Item>;
    pub fn into_iter(self) -> Self::IntoIter;
pub fn split(self) -> (Self, Option<Self>); pub fn fold_with<F>(self, folder: F) -> F
    where
        F: Folder<Self::Item>
, { ... } }

A variant on Producer which does not know its exact length or cannot represent it in a usize. These producers act like ordinary producers except that they cannot be told to split at a particular point. Instead, you just ask them to split 'somewhere'.

(In principle, Producer could extend this trait; however, it does not because to do so would require producers to carry their own length with them.)

Associated Types

type Item

The type of item returned by this producer.

type IntoIter: Iterator<Item = Self::Item>

The type of iterator we will become.

Loading content...

Required methods

pub fn into_iter(self) -> Self::IntoIter

Convert self into an iterator; at this point, no more parallel splits are possible.

pub fn split(self) -> (Self, Option<Self>)

Split midway into a new producer if possible, otherwise return None.

Loading content...

Provided methods

pub fn fold_with<F>(self, folder: F) -> F where
    F: Folder<Self::Item>, 

Iterate the producer, feeding each element to folder, and stop when the folder is full (or all elements have been consumed).

The provided implementation is sufficient for most iterables.

Loading content...

Implementors

Loading content...