Trait differential_dataflow::trace::Trace [] [src]

pub trait Trace<Key, Val, Time, R>: TraceReader<Key, Val, Time, R> where
    Self::Batch: Batch<Key, Val, Time, R>, 
{ fn new() -> Self;
fn insert(&mut self, batch: Self::Batch); }

An append-only collection of (key, val, time, diff) tuples.

The trace must pretend to look like a collection of (Key, Val, Time, isize) tuples, but is permitted to introduce new types KeyRef, ValRef, and TimeRef which can be dereference to the types above.

The trace must be constructable from, and navigable by the Key, Val, Time types, but does not need to return them.

Required Methods

Allocates a new empty trace.

Introduces a batch of updates to the trace.

Batches describe the time intervals they contain, and they should be added to the trace in contiguous intervals. If a batch arrives with a lower bound that does not equal the upper bound of the most recent addition, the trace will add an empty batch. It is an error to then try to populate that region of time.

This restriction could be relaxed, especially if we discover ways in which batch interval order could commute. For now, the trace should complain, to the extent that it cares about contiguous intervals.

Implementors