pub struct OrdKeyBatch<L: Layout> {
    pub storage: OrdKeyStorage<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: OrdKeyStorage<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: Layout> Batch for OrdKeyBatch<L>

§

type Merger = OrdKeyMerger<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 OrdKeyBatch<L>

§

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

Key by which updates are indexed.
§

type Val<'a> = &'a ()

Values associated with keys.
§

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

Timestamps associated with updates
§

type TimeGat<'a> = <<L as Layout>::TimeContainer as BatchContainer>::ReadItem<'a>

Borrowed form of timestamp.
§

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

Owned form of update difference.
§

type DiffGat<'a> = <<L as Layout>::DiffContainer as BatchContainer>::ReadItem<'a>

Borrowed form of update difference.
§

type Cursor = OrdKeyCursor<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.
source§

impl<'de, L: Layout> Deserialize<'de> for OrdKeyBatch<L>
where L::KeyContainer: Serialize + for<'a> Deserialize<'a>, L::OffsetContainer: Serialize + for<'a> Deserialize<'a>, L::TimeContainer: Serialize + for<'a> Deserialize<'a>, L::DiffContainer: Serialize + for<'a> Deserialize<'a>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<L: Layout> Serialize for OrdKeyBatch<L>
where L::KeyContainer: Serialize + for<'a> Deserialize<'a>, L::OffsetContainer: Serialize + for<'a> Deserialize<'a>, L::TimeContainer: Serialize + for<'a> Deserialize<'a>, L::DiffContainer: Serialize + for<'a> Deserialize<'a>,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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<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<'a, S, T> Semigroup<&'a S> for T
where T: Semigroup<S>,

source§

fn plus_equals(&mut self, rhs: &&'a S)

The method of std::ops::AddAssign, for types that do not implement AddAssign.
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.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,