Trait Layout

Source
pub trait Layout {
    type Target: Update + ?Sized;
    type KeyContainer: BatchContainer + PushInto<<Self::Target as Update>::Key>;
    type ValContainer: BatchContainer;
    type TimeContainer: BatchContainer<Owned = <Self::Target as Update>::Time> + PushInto<<Self::Target as Update>::Time>;
    type DiffContainer: BatchContainer<Owned = <Self::Target as Update>::Diff> + PushInto<<Self::Target as Update>::Diff>;
    type OffsetContainer: for<'a> BatchContainer<ReadItem<'a> = usize>;
}
Expand description

A type with opinions on how updates should be laid out.

Required Associated Types§

Source

type Target: Update + ?Sized

The represented update.

Source

type KeyContainer: BatchContainer + PushInto<<Self::Target as Update>::Key>

Container for update keys.

Source

type ValContainer: BatchContainer

Container for update vals.

Source

type TimeContainer: BatchContainer<Owned = <Self::Target as Update>::Time> + PushInto<<Self::Target as Update>::Time>

Container for times.

Source

type DiffContainer: BatchContainer<Owned = <Self::Target as Update>::Diff> + PushInto<<Self::Target as Update>::Diff>

Container for diffs.

Source

type OffsetContainer: for<'a> BatchContainer<ReadItem<'a> = usize>

Container for offsets.

Implementors§

Source§

impl<K, V, T, D> Layout for Preferred<K, V, T, D>
where K: Ord + ToOwned + PreferredContainer + ?Sized, K::Owned: Ord + Clone + 'static, V: Ord + ToOwned + PreferredContainer + ?Sized, V::Owned: Ord + Clone + 'static, T: Ord + Clone + Lattice + Timestamp, D: Ord + Clone + Semigroup + 'static,

Source§

impl<U: Update> Layout for TStack<U>

Source§

impl<U: Update> Layout for Vector<U>
where U::Diff: Ord,

impl<U: Update> Layout for MzStack<U>
where U::Key: Columnation + 'static, U::Val: Columnation + 'static, U::Time: Columnation, U::Diff: Columnation,

impl<U: Update<Key = Row>> Layout for RowValLayout<U>

impl<U: Update<Key = Row, Val = ()>> Layout for RowLayout<U>

impl<U: Update<Key = Row, Val = Row>> Layout for RowRowLayout<U>