Trait differential_dataflow::trace::cursor::Cursor

source ·
pub trait Cursor {
    type Key<'a>: Copy + Clone + MyTrait<'a, Owned = Self::KeyOwned>;
    type KeyOwned: Ord + Clone;
    type Val<'a>: Copy + Clone + MyTrait<'a> + for<'b> PartialOrd<Self::Val<'b>>;
    type Time: Timestamp + Lattice + Ord + Clone;
    type Diff: Semigroup + ?Sized;
    type Storage;

Show 15 methods // Required methods fn key_valid(&self, storage: &Self::Storage) -> bool; fn val_valid(&self, storage: &Self::Storage) -> bool; fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a>; fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a>; fn map_times<L: FnMut(&Self::Time, &Self::Diff)>( &mut self, storage: &Self::Storage, logic: L ); fn step_key(&mut self, storage: &Self::Storage); fn seek_key(&mut self, storage: &Self::Storage, key: Self::Key<'_>); fn step_val(&mut self, storage: &Self::Storage); fn seek_val(&mut self, storage: &Self::Storage, val: Self::Val<'_>); fn rewind_keys(&mut self, storage: &Self::Storage); fn rewind_vals(&mut self, storage: &Self::Storage); // Provided methods fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { ... } fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { ... } fn seek_key_owned(&mut self, storage: &Self::Storage, key: &Self::KeyOwned) { ... } fn to_vec<V, F>( &mut self, from: F, storage: &Self::Storage ) -> Vec<((Self::KeyOwned, V), Vec<(Self::Time, Self::Diff)>)> where F: Fn(Self::Val<'_>) -> V { ... }
}
Expand description

A cursor for navigating ordered (key, val, time, diff) updates.

Required Associated Types§

source

type Key<'a>: Copy + Clone + MyTrait<'a, Owned = Self::KeyOwned>

Key by which updates are indexed.

source

type KeyOwned: Ord + Clone

Owned version of the above.

source

type Val<'a>: Copy + Clone + MyTrait<'a> + for<'b> PartialOrd<Self::Val<'b>>

Values associated with keys.

source

type Time: Timestamp + Lattice + Ord + Clone

Timestamps associated with updates

source

type Diff: Semigroup + ?Sized

Associated update.

source

type Storage

Storage required by the cursor.

Required Methods§

source

fn key_valid(&self, storage: &Self::Storage) -> bool

Indicates if the current key is valid.

A value of false indicates that the cursor has exhausted all keys.

source

fn val_valid(&self, storage: &Self::Storage) -> bool

Indicates if the current value is valid.

A value of false indicates that the cursor has exhausted all values for this key.

source

fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a>

A reference to the current key. Asserts if invalid.

source

fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a>

A reference to the current value. Asserts if invalid.

source

fn map_times<L: FnMut(&Self::Time, &Self::Diff)>( &mut self, storage: &Self::Storage, logic: L )

Applies logic to each pair of time and difference. Intended for mutation of the closure’s scope.

source

fn step_key(&mut self, storage: &Self::Storage)

Advances the cursor to the next key.

source

fn seek_key(&mut self, storage: &Self::Storage, key: Self::Key<'_>)

Advances the cursor to the specified key.

source

fn step_val(&mut self, storage: &Self::Storage)

Advances the cursor to the next value.

source

fn seek_val(&mut self, storage: &Self::Storage, val: Self::Val<'_>)

Advances the cursor to the specified value.

source

fn rewind_keys(&mut self, storage: &Self::Storage)

Rewinds the cursor to the first key.

source

fn rewind_vals(&mut self, storage: &Self::Storage)

Rewinds the cursor to the first value for current key.

Provided Methods§

source

fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>>

Returns a reference to the current key, if valid.

source

fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>>

Returns a reference to the current value, if valid.

source

fn seek_key_owned(&mut self, storage: &Self::Storage, key: &Self::KeyOwned)

Convenience method to get access by reference to an owned key.

source

fn to_vec<V, F>( &mut self, from: F, storage: &Self::Storage ) -> Vec<((Self::KeyOwned, V), Vec<(Self::Time, Self::Diff)>)>
where F: Fn(Self::Val<'_>) -> V,

Rewinds the cursor and outputs its contents to a Vec

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<C, F> Cursor for CursorFilter<C, F>
where C: Cursor, F: FnMut(C::Key<'_>, C::Val<'_>) -> bool + 'static,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = <C as Cursor>::Storage

source§

impl<C, F> Cursor for CursorFreeze<C, F>
where C: Cursor, F: Fn(&C::Time) -> Option<C::Time>,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = <C as Cursor>::Storage

source§

impl<C, TInner> Cursor for differential_dataflow::trace::wrappers::enter::CursorEnter<C, TInner>
where C: Cursor, TInner: Refines<C::Time> + Lattice,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = TInner

§

type Diff = <C as Cursor>::Diff

§

type Storage = <C as Cursor>::Storage

source§

impl<C, TInner, F> Cursor for differential_dataflow::trace::wrappers::enter_at::CursorEnter<C, TInner, F>
where C: Cursor, TInner: Refines<C::Time> + Lattice, F: FnMut(C::Key<'_>, C::Val<'_>, &C::Time) -> TInner,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = TInner

§

type Diff = <C as Cursor>::Diff

§

type Storage = <C as Cursor>::Storage

source§

impl<C: Cursor> Cursor for AbomonatedBatchCursor<C>
where C::Storage: Abomonation,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = Abomonated<<C as Cursor>::Storage, Vec<u8>>

source§

impl<C: Cursor> Cursor for RcBatchCursor<C>

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = Rc<<C as Cursor>::Storage>

source§

impl<C: Cursor> Cursor for BatchCursorFrontier<C>
where C::Storage: BatchReader,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = BatchFrontier<<C as Cursor>::Storage>

source§

impl<C: Cursor> Cursor for CursorFrontier<C, C::Time>

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = <C as Cursor>::Storage

source§

impl<C: Cursor> Cursor for CursorList<C>

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = Vec<<C as Cursor>::Storage>

source§

impl<C: Cursor, F> Cursor for BatchCursorFilter<C, F>
where F: FnMut(C::Key<'_>, C::Val<'_>) -> bool + 'static,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = BatchFilter<<C as Cursor>::Storage, F>

source§

impl<C: Cursor, F> Cursor for BatchCursorFreeze<C, F>
where F: Fn(&C::Time) -> Option<C::Time>,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = <C as Cursor>::Time

§

type Diff = <C as Cursor>::Diff

§

type Storage = BatchFreeze<<C as Cursor>::Storage, F>

source§

impl<TInner, C: Cursor> Cursor for differential_dataflow::trace::wrappers::enter::BatchCursorEnter<C, TInner>
where TInner: Refines<C::Time> + Lattice,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = TInner

§

type Diff = <C as Cursor>::Diff

§

type Storage = BatchEnter<<C as Cursor>::Storage, TInner>

source§

impl<TInner, C: Cursor, F> Cursor for differential_dataflow::trace::wrappers::enter_at::BatchCursorEnter<C, TInner, F>
where TInner: Refines<C::Time> + Lattice, F: FnMut(C::Key<'_>, C::Val<'_>, &C::Time) -> TInner,

§

type Key<'a> = <C as Cursor>::Key<'a>

§

type KeyOwned = <C as Cursor>::KeyOwned

§

type Val<'a> = <C as Cursor>::Val<'a>

§

type Time = TInner

§

type Diff = <C as Cursor>::Diff

§

type Storage = BatchEnter<<C as Cursor>::Storage, TInner, F>