Trait mz_compute::extensions::reduce::MzReduce
source · pub(crate) trait MzReduce<G: Scope, T1: TraceReader<Time = G::Timestamp>>{
// Required method
fn mz_reduce_abelian<L, K, V, T2>(
&self,
name: &str,
logic: L,
) -> Arranged<G, TraceAgent<T2>>
where T2: for<'a> Trace<Key<'a> = T1::Key<'a>, Time = G::Timestamp> + 'static,
K: Data,
V: Data,
for<'a> T1::Key<'a>: IntoOwned<'a, Owned = K>,
for<'a> T2::Val<'a>: IntoOwned<'a, Owned = V>,
T2::Diff: Abelian,
T2::Batch: Batch,
T2::Builder: Builder,
<T2::Builder as Builder>::Input: Container + PushInto<((K, V), T2::Time, T2::Diff)>,
L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(V, T2::Diff)>) + 'static,
Arranged<G, TraceAgent<T2>>: ArrangementSize;
}
Expand description
Extension trait for the reduce_abelian
differential dataflow method.
Required Methods§
sourcefn mz_reduce_abelian<L, K, V, T2>(
&self,
name: &str,
logic: L,
) -> Arranged<G, TraceAgent<T2>>where
T2: for<'a> Trace<Key<'a> = T1::Key<'a>, Time = G::Timestamp> + 'static,
K: Data,
V: Data,
for<'a> T1::Key<'a>: IntoOwned<'a, Owned = K>,
for<'a> T2::Val<'a>: IntoOwned<'a, Owned = V>,
T2::Diff: Abelian,
T2::Batch: Batch,
T2::Builder: Builder,
<T2::Builder as Builder>::Input: Container + PushInto<((K, V), T2::Time, T2::Diff)>,
L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(V, T2::Diff)>) + 'static,
Arranged<G, TraceAgent<T2>>: ArrangementSize,
fn mz_reduce_abelian<L, K, V, T2>(
&self,
name: &str,
logic: L,
) -> Arranged<G, TraceAgent<T2>>where
T2: for<'a> Trace<Key<'a> = T1::Key<'a>, Time = G::Timestamp> + 'static,
K: Data,
V: Data,
for<'a> T1::Key<'a>: IntoOwned<'a, Owned = K>,
for<'a> T2::Val<'a>: IntoOwned<'a, Owned = V>,
T2::Diff: Abelian,
T2::Batch: Batch,
T2::Builder: Builder,
<T2::Builder as Builder>::Input: Container + PushInto<((K, V), T2::Time, T2::Diff)>,
L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(V, T2::Diff)>) + 'static,
Arranged<G, TraceAgent<T2>>: ArrangementSize,
Applies reduce
to arranged data, and returns an arrangement of output data.
Object Safety§
This trait is not object safe.
Implementations on Foreign Types§
source§impl<G, T1> MzReduce<G, T1> for Arranged<G, T1>
impl<G, T1> MzReduce<G, T1> for Arranged<G, T1>
source§fn mz_reduce_abelian<L, K, V, T2>(
&self,
name: &str,
logic: L,
) -> Arranged<G, TraceAgent<T2>>where
T2: for<'a> Trace<Key<'a> = T1::Key<'a>, Time = G::Timestamp> + 'static,
K: Data,
V: Data,
for<'a> T1::Key<'a>: IntoOwned<'a, Owned = K>,
for<'a> T2::Val<'a>: IntoOwned<'a, Owned = V>,
T2::Diff: Abelian,
T2::Batch: Batch,
T2::Builder: Builder,
<T2::Builder as Builder>::Input: Container + PushInto<((K, V), T2::Time, T2::Diff)>,
L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(V, T2::Diff)>) + 'static,
Arranged<G, TraceAgent<T2>>: ArrangementSize,
fn mz_reduce_abelian<L, K, V, T2>(
&self,
name: &str,
logic: L,
) -> Arranged<G, TraceAgent<T2>>where
T2: for<'a> Trace<Key<'a> = T1::Key<'a>, Time = G::Timestamp> + 'static,
K: Data,
V: Data,
for<'a> T1::Key<'a>: IntoOwned<'a, Owned = K>,
for<'a> T2::Val<'a>: IntoOwned<'a, Owned = V>,
T2::Diff: Abelian,
T2::Batch: Batch,
T2::Builder: Builder,
<T2::Builder as Builder>::Input: Container + PushInto<((K, V), T2::Time, T2::Diff)>,
L: FnMut(T1::Key<'_>, &[(T1::Val<'_>, T1::Diff)], &mut Vec<(V, T2::Diff)>) + 'static,
Arranged<G, TraceAgent<T2>>: ArrangementSize,
Applies reduce
to arranged data, and returns an arrangement of output data.