Function differential_dataflow::operators::join::join_traces

source ·
pub fn join_traces<G, T1, T2, L, CB>(
    arranged1: &Arranged<G, T1>,
    arranged2: &Arranged<G, T2>,
    result: L
) -> StreamCore<G, CB::Container>
where G: Scope<Timestamp = T1::Time>, T1: TraceReader + Clone + 'static, T2: for<'a> TraceReader<Key<'a> = T1::Key<'a>, Time = T1::Time> + Clone + 'static, L: FnMut(T1::Key<'_>, T1::Val<'_>, T2::Val<'_>, &G::Timestamp, &T1::Diff, &T2::Diff, &mut JoinSession<'_, T1::Time, CB, CB::Container>) + 'static, CB: ContainerBuilder + 'static,
Expand description

An equijoin of two traces, sharing a common key type.

This method exists to provide join functionality without opinions on the specific input types, keys and values, that should be presented. The two traces here can have arbitrary key and value types, which can be unsized and even potentially unrelated to the input collection data. Importantly, the key and value types could be generic associated types (GATs) of the traces, and we would seemingly struggle to frame these types as trait arguments.

The implementation produces a caller-specified container. Implementations can use AsCollection to wrap the output stream in a collection.

The “correctness” of this method depends heavily on the behavior of the supplied result function.