pub struct OrdValBatch<L: Layout> {
    pub storage: OrdValStorage<L>,
    pub description: Description<<L::Target as Update>::Time>,
    pub updates: usize,
}
Expand description

An immutable collection of update tuples, from a contiguous interval of logical times.

The L parameter captures how the updates should be laid out, and C determines which merge batcher to select.

Fields§

§storage: OrdValStorage<L>

The updates themselves.

§description: Description<<L::Target as Update>::Time>

Description of the update times this layer represents.

§updates: usize

The number of updates reflected in the batch.

We track this separately from storage because due to the singleton optimization, we may have many more updates than storage.updates.len(). It should equal that length, plus the number of singleton optimizations employed.

Trait Implementations§

source§

impl<L> Abomonation for OrdValBatch<L>
where OrdValStorage<L>: Abomonation, L: Abomonation + Layout, Description<<L::Target as Update>::Time>: Abomonation,

source§

unsafe fn entomb<W: Write>(&self, _write: &mut W) -> Result<()>

Write any additional information about &self beyond its binary representation. Read more
source§

fn extent(&self) -> usize

Reports the number of further bytes required to entomb self.
source§

unsafe fn exhume<'a, 'b>( &'a mut self, bytes: &'b mut [u8] ) -> Option<&'b mut [u8]>

Recover any information for &mut self not evident from its binary representation. Read more
source§

impl<L: Layout> Batch for OrdValBatch<L>

§

type Merger = OrdValMerger<L>

A type used to progressively merge batches.
source§

fn begin_merge( &self, other: &Self, compaction_frontier: AntichainRef<'_, <L::Target as Update>::Time> ) -> Self::Merger

Initiates the merging of consecutive batches. Read more
source§

impl<L: Layout> BatchReader for OrdValBatch<L>

§

type Key<'a> = <<L as Layout>::KeyContainer as BatchContainer>::ReadItem<'a>

Key by which updates are indexed.
§

type KeyOwned = <<L as Layout>::Target as Update>::Key

Owned version of the above.
§

type Val<'a> = <<L as Layout>::ValContainer as BatchContainer>::ReadItem<'a>

Values associated with keys.
§

type ValOwned = <<L as Layout>::Target as Update>::Val

Owned version of the above.
§

type Time = <<L as Layout>::Target as Update>::Time

Timestamps associated with updates
§

type Diff = <<L as Layout>::Target as Update>::Diff

Associated update.
§

type Cursor = OrdValCursor<L>

The type used to enumerate the batch’s contents.
source§

fn cursor(&self) -> Self::Cursor

Acquires a cursor to the batch’s contents.
source§

fn len(&self) -> usize

The number of updates in the batch.
source§

fn description(&self) -> &Description<<L::Target as Update>::Time>

Describes the times of the updates in the batch.
source§

fn is_empty(&self) -> bool

True if the batch is empty.
source§

fn lower(&self) -> &Antichain<Self::Time>

All times in the batch are greater or equal to an element of lower.
source§

fn upper(&self) -> &Antichain<Self::Time>

All times in the batch are not greater or equal to any element of upper.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<R, O, T> CopyOnto<ConsecutiveOffsetPairs<R, O>> for T
where R: Region<Index = (usize, usize)>, O: OffsetContainer<usize>, T: CopyOnto<R>,

source§

fn copy_onto( self, target: &mut ConsecutiveOffsetPairs<R, O> ) -> <ConsecutiveOffsetPairs<R, O> as Region>::Index

Copy self into the target container, returning an index that allows to look up the corresponding read item.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<R, T> PushInto<FlatStack<R>> for T
where R: Region + Clone + 'static, T: CopyOnto<R>,

source§

fn push_into(self, target: &mut FlatStack<R>)

Push self into the target container.
source§

impl<T> PushInto<Vec<T>> for T

source§

fn push_into(self, target: &mut Vec<T>)

Push self into the target container.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.