[][src]Module differential_dataflow::trace::wrappers::freeze

Wrappers to transform the timestamps of updates.

These wrappers are primarily intended to support the re-use of a multi-version index as if it were frozen at a particular (nested) timestamp. For example, if one wants to re-use an index multiple times with minor edits, and only observe the edits at one logical time (meaning: observing all edits less or equal to that time, advanced to that time), this should allow that behavior.

Informally, this wrapper is parameterized by a function F: Fn(&T)->Option<T> which provides the opportunity to alter the time at which an update happens and to suppress that update, if appropriate. For example, the function

This example is not tested
|t| if t.inner <= 10 { let mut t = t.clone(); t.inner = 10; Some(t) } else { None }

could be used to present all updates through inner iteration 10, but advanced to inner iteration 10, as if they all occurred exactly at that moment.

Structs

BatchCursorFreeze

Wrapper to provide cursor to nested scope.

BatchFreeze

Wrapper to provide batch to nested scope.

CursorFreeze

Wrapper to provide cursor to nested scope.

TraceFreeze

Wrapper to provide trace to nested scope.

Functions

freeze

Freezes updates to an arrangement using a supplied function.