Trait PusheratorBuild

Source
pub trait PusheratorBuild {
    type ItemOut;
    type Output<Next: Pusherator<Item = Self::ItemOut>>;

    // Required method
    fn push_to<Next>(self, input: Next) -> Self::Output<Next>
       where Next: Pusherator<Item = Self::ItemOut>;

    // Provided methods
    fn map<Func, Out>(self, func: Func) -> MapBuild<Self, Func>
       where Self: Sized,
             Func: FnMut(Self::ItemOut) -> Out { ... }
    fn inspect<Func>(self, func: Func) -> InspectBuild<Self, Func>
       where Self: Sized,
             Func: FnMut(&Self::ItemOut) { ... }
    fn filter<Func>(self, func: Func) -> FilterBuild<Self, Func>
       where Self: Sized,
             Func: FnMut(&Self::ItemOut) -> bool { ... }
    fn tee<Next1>(self, next1: Next1) -> TeeBuild<Self, Next1>
       where Self: Sized,
             Self::ItemOut: Clone,
             Next1: Pusherator<Item = Self::ItemOut> { ... }
    fn unzip<Next1, Item2>(self, next1: Next1) -> UnzipBuild<Self, Next1>
       where Self: Sized + PusheratorBuild<ItemOut = (Next1::Item, Item2)>,
             Next1: Pusherator { ... }
    fn switch<Next1, Item2>(self, next1: Next1) -> SwitchBuild<Self, Next1>
       where Self: Sized + PusheratorBuild<ItemOut = Either<Next1::Item, Item2>>,
             Next1: Pusherator { ... }
    fn for_each<Func>(
        self,
        func: Func,
    ) -> Self::Output<ForEach<Func, Self::ItemOut>>
       where Self: Sized,
             Func: FnMut(Self::ItemOut) { ... }
    fn demux<Func, Nexts>(
        self,
        func: Func,
        nexts: Nexts,
    ) -> Self::Output<Demux<Func, Nexts, Self::ItemOut>>
       where Self: Sized,
             Func: FnMut(Self::ItemOut, &mut Nexts) { ... }
}

Required Associated Types§

Source

type ItemOut

Source

type Output<Next: Pusherator<Item = Self::ItemOut>>

Required Methods§

Source

fn push_to<Next>(self, input: Next) -> Self::Output<Next>
where Next: Pusherator<Item = Self::ItemOut>,

Provided Methods§

Source

fn map<Func, Out>(self, func: Func) -> MapBuild<Self, Func>
where Self: Sized, Func: FnMut(Self::ItemOut) -> Out,

Source

fn inspect<Func>(self, func: Func) -> InspectBuild<Self, Func>
where Self: Sized, Func: FnMut(&Self::ItemOut),

Source

fn filter<Func>(self, func: Func) -> FilterBuild<Self, Func>
where Self: Sized, Func: FnMut(&Self::ItemOut) -> bool,

Source

fn tee<Next1>(self, next1: Next1) -> TeeBuild<Self, Next1>
where Self: Sized, Self::ItemOut: Clone, Next1: Pusherator<Item = Self::ItemOut>,

Source

fn unzip<Next1, Item2>(self, next1: Next1) -> UnzipBuild<Self, Next1>
where Self: Sized + PusheratorBuild<ItemOut = (Next1::Item, Item2)>, Next1: Pusherator,

Source

fn switch<Next1, Item2>(self, next1: Next1) -> SwitchBuild<Self, Next1>
where Self: Sized + PusheratorBuild<ItemOut = Either<Next1::Item, Item2>>, Next1: Pusherator,

Source

fn for_each<Func>( self, func: Func, ) -> Self::Output<ForEach<Func, Self::ItemOut>>
where Self: Sized, Func: FnMut(Self::ItemOut),

Source

fn demux<Func, Nexts>( self, func: Func, nexts: Nexts, ) -> Self::Output<Demux<Func, Nexts, Self::ItemOut>>
where Self: Sized, Func: FnMut(Self::ItemOut, &mut Nexts),

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.

Implementors§

Source§

impl<I> PusheratorBuild for PivotBuild<I>
where I: Iterator,

Source§

type ItemOut = <I as Iterator>::Item

Source§

type Output<O: Pusherator<Item = Self::ItemOut>> = Pivot<I, O>

Source§

impl<Prev> PusheratorBuild for FlattenBuild<Prev>
where Prev: PusheratorBuild, Prev::ItemOut: IntoIterator,

Source§

type ItemOut = <<Prev as PusheratorBuild>::ItemOut as IntoIterator>::Item

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Flatten<Next, <Prev as PusheratorBuild>::ItemOut>>

Source§

impl<Prev, Func> PusheratorBuild for FilterBuild<Prev, Func>
where Prev: PusheratorBuild, Func: FnMut(&Prev::ItemOut) -> bool,

Source§

type ItemOut = <Prev as PusheratorBuild>::ItemOut

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Filter<Next, Func>>

Source§

impl<Prev, Func> PusheratorBuild for InspectBuild<Prev, Func>
where Prev: PusheratorBuild, Func: FnMut(&Prev::ItemOut),

Source§

type ItemOut = <Prev as PusheratorBuild>::ItemOut

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Inspect<Next, Func>>

Source§

impl<Prev, Func, Out> PusheratorBuild for FilterMapBuild<Prev, Func>
where Prev: PusheratorBuild, Func: FnMut(Prev::ItemOut) -> Option<Out>,

Source§

type ItemOut = Out

Source§

type Output<O: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<FilterMap<O, Func, <Prev as PusheratorBuild>::ItemOut>>

Source§

impl<Prev, Func, Out> PusheratorBuild for MapBuild<Prev, Func>
where Prev: PusheratorBuild, Func: FnMut(Prev::ItemOut) -> Out,

Source§

type ItemOut = Out

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Map<Next, Func, <Prev as PusheratorBuild>::ItemOut>>

Source§

impl<Prev, Next1> PusheratorBuild for TeeBuild<Prev, Next1>
where Prev: PusheratorBuild, Next1: Pusherator<Item = Prev::ItemOut>, Prev::ItemOut: Clone,

Source§

type ItemOut = <Prev as PusheratorBuild>::ItemOut

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Tee<Next1, Next>>

Source§

impl<Prev, Next1, Func> PusheratorBuild for PartitionBuild<Prev, Next1, Func>
where Prev: PusheratorBuild, Next1: Pusherator<Item = Prev::ItemOut>, Func: FnMut(&Prev::ItemOut) -> bool,

Source§

type ItemOut = <Prev as PusheratorBuild>::ItemOut

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Partition<Next1, Next, Func>>

Source§

impl<Prev, Next1, Item2> PusheratorBuild for SwitchBuild<Prev, Next1>
where Prev: PusheratorBuild<ItemOut = Either<Next1::Item, Item2>>, Next1: Pusherator,

Source§

type ItemOut = Item2

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Switch<Next1, Next>>

Source§

impl<Prev, Next1, Item2> PusheratorBuild for UnzipBuild<Prev, Next1>
where Prev: PusheratorBuild<ItemOut = (Next1::Item, Item2)>, Next1: Pusherator,

Source§

type ItemOut = Item2

Source§

type Output<Next: Pusherator<Item = Self::ItemOut>> = <Prev as PusheratorBuild>::Output<Unzip<Next1, Next>>

Source§

impl<T> PusheratorBuild for InputBuild<T>

Source§

type ItemOut = T

Source§

type Output<O: Pusherator<Item = Self::ItemOut>> = O