fn build_collation<G>(
    debug_name: &str,
    arrangements: Vec<(ReductionType, Arranged<G, TraceAgent<ColValSpine<Row, Row, <G as ScopeParent>::Timestamp, Diff, usize>>>)>,
    aggregate_types: Vec<ReductionType>,
    scope: &mut G
) -> (Arranged<G, TraceAgent<ColValSpine<Row, Row, <G as ScopeParent>::Timestamp, Diff, usize>>>, Collection<G, DataflowError, Diff>)where
    G: Scope,
    G::Timestamp: Lattice,
Expand description

Build the dataflow to combine arrangements containing results of different aggregation types into a single arrangement.

This computes the same thing as a join on the group key followed by shuffling the values into the correct order. This implementation assumes that all input arrangements present values in a way that respects the desired output order, so we can do a linear merge to form the output.