pub(crate) trait MzReduce<G: Scope, T1: TraceReader<Time = G::Timestamp>>{
// Required method
fn mz_reduce_abelian<L, K, V, Bu, 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,
Bu: Builder<Time = G::Timestamp, Output = T2::Batch>,
Bu::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, Bu, 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,
Bu: Builder<Time = G::Timestamp, Output = T2::Batch>,
Bu::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, Bu, 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,
Bu: Builder<Time = G::Timestamp, Output = T2::Batch>,
Bu::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.
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.
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, Bu, 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,
Bu: Builder<Time = G::Timestamp, Output = T2::Batch>,
Bu::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, Bu, 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,
Bu: Builder<Time = G::Timestamp, Output = T2::Batch>,
Bu::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.