Module freeze

Source
Expand description

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

|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.