[][src]Trait amadeus_core::dist_sink::DistributedSink

#[must_use]pub trait DistributedSink<I: DistributedPipe<Source>, Source, B> {
    type ReduceAFactory: Factory<Item = Self::ReduceA> + Clone + ProcessSend;
    type ReduceBFactory: Factory<Item = Self::ReduceB>;
    type ReduceA: ReducerSend<Item = <I as DistributedPipe<Source>>::Item> + ProcessSend;
    type ReduceB: ReducerProcessSend<Item = <Self::ReduceA as Reducer>::Output> + ProcessSend;
    type ReduceC: Reducer<Item = <Self::ReduceB as Reducer>::Output, Output = B>;
    fn reducers(
        self
    ) -> (I, Self::ReduceAFactory, Self::ReduceBFactory, Self::ReduceC); }

Associated Types

type ReduceAFactory: Factory<Item = Self::ReduceA> + Clone + ProcessSend

type ReduceBFactory: Factory<Item = Self::ReduceB>

type ReduceA: ReducerSend<Item = <I as DistributedPipe<Source>>::Item> + ProcessSend

type ReduceB: ReducerProcessSend<Item = <Self::ReduceA as Reducer>::Output> + ProcessSend

type ReduceC: Reducer<Item = <Self::ReduceB as Reducer>::Output, Output = B>

Loading content...

Required methods

fn reducers(
    self
) -> (I, Self::ReduceAFactory, Self::ReduceBFactory, Self::ReduceC)

Loading content...

Implementations on Foreign Types

impl<Source> DistributedSink<(), Source, ()> for () where
    Source: , 
[src]

impl<I0: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, O0> DistributedSink<(I0,), Source, (O0,)> for (R0,) where
    Source: , 
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, O0, O1> DistributedSink<(I0, I1), Source, (O0, O1)> for (R0, R1) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, O0, O1, O2> DistributedSink<(I0, I1, I2), Source, (O0, O1, O2)> for (R0, R1, R2) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, I3: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, R3: DistributedSink<I3, Source, O3>, O0, O1, O2, O3> DistributedSink<(I0, I1, I2, I3), Source, (O0, O1, O2, O3)> for (R0, R1, R2, R3) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, I3: DistributedPipe<Source>, I4: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, R3: DistributedSink<I3, Source, O3>, R4: DistributedSink<I4, Source, O4>, O0, O1, O2, O3, O4> DistributedSink<(I0, I1, I2, I3, I4), Source, (O0, O1, O2, O3, O4)> for (R0, R1, R2, R3, R4) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, I3: DistributedPipe<Source>, I4: DistributedPipe<Source>, I5: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, R3: DistributedSink<I3, Source, O3>, R4: DistributedSink<I4, Source, O4>, R5: DistributedSink<I5, Source, O5>, O0, O1, O2, O3, O4, O5> DistributedSink<(I0, I1, I2, I3, I4, I5), Source, (O0, O1, O2, O3, O4, O5)> for (R0, R1, R2, R3, R4, R5) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, I3: DistributedPipe<Source>, I4: DistributedPipe<Source>, I5: DistributedPipe<Source>, I6: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, R3: DistributedSink<I3, Source, O3>, R4: DistributedSink<I4, Source, O4>, R5: DistributedSink<I5, Source, O5>, R6: DistributedSink<I6, Source, O6>, O0, O1, O2, O3, O4, O5, O6> DistributedSink<(I0, I1, I2, I3, I4, I5, I6), Source, (O0, O1, O2, O3, O4, O5, O6)> for (R0, R1, R2, R3, R4, R5, R6) where
    Source: Copy
[src]

impl<I0: DistributedPipe<Source>, I1: DistributedPipe<Source>, I2: DistributedPipe<Source>, I3: DistributedPipe<Source>, I4: DistributedPipe<Source>, I5: DistributedPipe<Source>, I6: DistributedPipe<Source>, I7: DistributedPipe<Source>, Source, R0: DistributedSink<I0, Source, O0>, R1: DistributedSink<I1, Source, O1>, R2: DistributedSink<I2, Source, O2>, R3: DistributedSink<I3, Source, O3>, R4: DistributedSink<I4, Source, O4>, R5: DistributedSink<I5, Source, O5>, R6: DistributedSink<I6, Source, O6>, R7: DistributedSink<I7, Source, O7>, O0, O1, O2, O3, O4, O5, O6, O7> DistributedSink<(I0, I1, I2, I3, I4, I5, I6, I7), Source, (O0, O1, O2, O3, O4, O5, O6, O7)> for (R0, R1, R2, R3, R4, R5, R6, R7) where
    Source: Copy
[src]

Loading content...

Implementors

impl<I: DistributedPipe<Source>, B, Source> DistributedSink<I, Source, B> for Sum<I, B> where
    B: Sum<I::Item> + Sum<B> + ProcessSend,
    I::Item: 'static, 
[src]

type ReduceAFactory = SumReduceFactory<I::Item, B>

type ReduceBFactory = SumReduceFactory<B, B>

type ReduceA = SumReducer<I::Item, B>

type ReduceB = SumReducer<B, B>

type ReduceC = SumReducer<B, B>

impl<I: DistributedPipe<Source>, Source> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for Max<I> where
    I::Item: Ord + ProcessSend
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, Max>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, Max>

type ReduceA = CombineReducer<I::Item, I::Item, Max>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, Max>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, Max>

impl<I: DistributedPipe<Source>, Source> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for Min<I> where
    I::Item: Ord + ProcessSend
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, Min>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, Min>

type ReduceA = CombineReducer<I::Item, I::Item, Min>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, Min>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, Min>

impl<I: DistributedPipe<Source>, Source> DistributedSink<I, Source, usize> for Count<I> where
    I::Item: 'static, 
[src]

impl<I: DistributedPipe<Source>, Source> DistributedSink<I, Source, SampleUnstable<<I as DistributedPipe<Source>>::Item>> for SampleUnstable<I> where
    I::Item: ProcessSend
[src]

impl<I: DistributedPipe<Source>, Source> DistributedSink<I, Source, Top<<I as DistributedPipe<Source>>::Item, usize>> for MostFrequent<I> where
    I::Item: Clone + Hash + Eq + ProcessSend
[src]

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for Combine<I, F> where
    F: FnMut(I::Item, I::Item) -> I::Item + Clone + ProcessSend,
    I::Item: ProcessSend
[src]

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for MaxBy<I, F> where
    F: FnMut(&I::Item, &I::Item) -> Ordering + Clone + ProcessSend,
    I::Item: ProcessSend
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, MaxBy<F>>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, MaxBy<F>>

type ReduceA = CombineReducer<I::Item, I::Item, MaxBy<F>>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, MaxBy<F>>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, MaxBy<F>>

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for MinBy<I, F> where
    F: FnMut(&I::Item, &I::Item) -> Ordering + Clone + ProcessSend,
    I::Item: ProcessSend
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, MinBy<F>>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, MinBy<F>>

type ReduceA = CombineReducer<I::Item, I::Item, MinBy<F>>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, MinBy<F>>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, MinBy<F>>

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, bool> for All<I, F> where
    F: FnMut(I::Item) -> bool + Clone + ProcessSend,
    I::Item: 'static, 
[src]

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, bool> for Any<I, F> where
    F: FnMut(I::Item) -> bool + Clone + ProcessSend,
    I::Item: 'static, 
[src]

impl<I: DistributedPipe<Source>, Source, F> DistributedSink<I, Source, ()> for ForEach<I, F> where
    F: FnMut(I::Item) + Clone + ProcessSend,
    I::Item: 'static, 
[src]

impl<I: DistributedPipe<Source>, Source, F, B> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for MaxByKey<I, F> where
    F: FnMut(&I::Item) -> B + Clone + ProcessSend,
    I::Item: ProcessSend,
    B: Ord + 'static, 
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, MaxByKey<F, B>>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, MaxByKey<F, B>>

type ReduceA = CombineReducer<I::Item, I::Item, MaxByKey<F, B>>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, MaxByKey<F, B>>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, MaxByKey<F, B>>

impl<I: DistributedPipe<Source>, Source, F, B> DistributedSink<I, Source, Option<<I as DistributedPipe<Source>>::Item>> for MinByKey<I, F> where
    F: FnMut(&I::Item) -> B + Clone + ProcessSend,
    I::Item: ProcessSend,
    B: Ord + 'static, 
[src]

type ReduceAFactory = CombineReduceFactory<I::Item, I::Item, MinByKey<F, B>>

type ReduceBFactory = CombineReduceFactory<Option<I::Item>, I::Item, MinByKey<F, B>>

type ReduceA = CombineReducer<I::Item, I::Item, MinByKey<F, B>>

type ReduceB = CombineReducer<Option<I::Item>, I::Item, MinByKey<F, B>>

type ReduceC = CombineReducer<Option<I::Item>, I::Item, MinByKey<F, B>>

impl<I: DistributedPipe<Source>, Source, ID, F, B> DistributedSink<I, Source, B> for Fold<I, ID, F, B> where
    ID: FnMut() -> B + Clone + ProcessSend,
    F: FnMut(B, Either<I::Item, B>) -> B + Clone + ProcessSend,
    B: ProcessSend,
    I::Item: 'static, 
[src]

type ReduceAFactory = FoldReducerAFactory<I::Item, ID, F, B>

type ReduceBFactory = FoldReducerBFactory<I::Item, ID, F, B>

type ReduceA = FoldReducerA<I::Item, ID, F, B>

type ReduceB = FoldReducerB<I::Item, ID, F, B>

type ReduceC = FoldReducerB<I::Item, ID, F, B>

impl<I: DistributedPipe<Source>, Source, T: FromDistributedStream<I::Item>> DistributedSink<I, Source, T> for Collect<I, T>[src]

type ReduceAFactory = T::ReduceAFactory

type ReduceBFactory = T::ReduceBFactory

type ReduceA = T::ReduceA

type ReduceB = T::ReduceB

type ReduceC = T::ReduceC

impl<I: DistributedPipe<Source, Item = (A, B)>, Source, A, B> DistributedSink<I, Source, Top<A, HyperLogLogMagnitude<B>>> for MostDistinct<I> where
    A: Clone + Hash + Eq + ProcessSend,
    B: Hash + 'static, 
[src]

Loading content...