pub fn arrange_from_upsert<G, K, V, Bu, Tr>(
    stream: &Stream<G, (K, Option<V>, G::Timestamp)>,
    name: &str,
) -> Arranged<G, TraceAgent<Tr>>
where G: Scope<Timestamp = Tr::Time>, Tr: Trace + TraceReader<Diff = isize> + 'static, for<'a> Tr::Key<'a>: IntoOwned<'a, Owned = K>, K: ExchangeData + Hashable + Hash, V: ExchangeData, for<'a> Tr::Val<'a>: IntoOwned<'a, Owned = V>, Tr::Time: TotalOrder + ExchangeData, Tr::Batch: Batch, Bu: Builder<Time = G::Timestamp, Input = Vec<((K, V), Tr::Time, Tr::Diff)>, Output = Tr::Batch>,
Expand description

Arrange data from a stream of keyed upserts.

The input should be a stream of timestamped pairs of Key and Option. The contents of the collection are defined key-by-key, where each optional value in sequence either replaces or removes the existing value, should it exist.

This method is only implemented for totally ordered times, as we do not yet understand what a “sequence” of upserts would mean for partially ordered timestamps.