Cursor

Trait Cursor 

Source
pub trait Cursor: LayoutExt {
    type Storage;

Show 14 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 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 map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>( &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 method fn to_vec<K, IK, V, IV>( &mut self, storage: &Self::Storage, into_key: IK, into_val: IV, ) -> Vec<((K, V), Vec<(Self::Time, Self::Diff)>)> where IK: for<'a> Fn(Self::Key<'a>) -> K, IV: for<'a> Fn(Self::Val<'a>) -> V { ... }
}
Expand description

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

Required Associated Types§

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 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 map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>( &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 to_vec<K, IK, V, IV>( &mut self, storage: &Self::Storage, into_key: IK, into_val: IV, ) -> Vec<((K, V), Vec<(Self::Time, Self::Diff)>)>
where IK: for<'a> Fn(Self::Key<'a>) -> K, IV: for<'a> Fn(Self::Val<'a>) -> V,

Rewinds the cursor and outputs its contents to a Vec

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so 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,

Source§

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

Source§

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

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::TimeGat<'_>) -> TInner,

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<L: Layout> Cursor for OrdValCursor<L>

Source§

impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> Cursor for OrdKeyCursor<L>

Source§

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

Source§

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::TimeGat<'_>) -> TInner,

Source§

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