OrdKeyBatch

Struct OrdKeyBatch 

Source
pub struct OrdKeyBatch<L: Layout> {
    pub storage: OrdKeyStorage<L>,
    pub description: Description<Time<L>>,
    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<Time<L>>

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: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> Batch for OrdKeyBatch<L>

Source§

type Merger = OrdKeyMerger<L>

A type used to progressively merge batches.
Source§

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

Initiates the merging of consecutive batches. Read more
Source§

fn empty(lower: Antichain<Self::Time>, upper: Antichain<Self::Time>) -> Self

Produce an empty batch over the indicated interval.
Source§

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

Source§

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<Time<L>>

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> Merger<OrdKeyBatch<L>> for OrdKeyMerger<L>
where OrdKeyBatch<L>: Batch<Time = Time<L>>,

Source§

fn new( batch1: &OrdKeyBatch<L>, batch2: &OrdKeyBatch<L>, compaction_frontier: AntichainRef<'_, Time<L>>, ) -> Self

Creates a new merger to merge the supplied batches, optionally compacting up to the supplied frontier.
Source§

fn done(self) -> OrdKeyBatch<L>

Extracts merged results. Read more
Source§

fn work( &mut self, source1: &OrdKeyBatch<L>, source2: &OrdKeyBatch<L>, fuel: &mut isize, )

Perform some amount of work, decrementing fuel. 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
Source§

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

Source§

type Layout = L

The layout.

Auto Trait Implementations§

§

impl<L> Freeze for OrdKeyBatch<L>

§

impl<L> RefUnwindSafe for OrdKeyBatch<L>

§

impl<L> Send for OrdKeyBatch<L>

§

impl<L> Sync for OrdKeyBatch<L>

§

impl<L> Unpin for OrdKeyBatch<L>

§

impl<L> UnwindSafe for OrdKeyBatch<L>

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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<L> LayoutExt for L
where L: WithLayout,

Source§

type KeyOwn = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::Owned

Alias for an owned key of a layout.
Source§

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

Alias for an borrowed key of a layout.
Source§

type ValOwn = <<<L as WithLayout>::Layout as Layout>::ValContainer as BatchContainer>::Owned

Alias for an owned val of a layout.
Source§

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

Alias for an borrowed val of a layout.
Source§

type Time = <<<L as WithLayout>::Layout as Layout>::TimeContainer as BatchContainer>::Owned

Alias for an owned time of a layout.
Source§

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

Alias for an borrowed time of a layout.
Source§

type Diff = <<<L as WithLayout>::Layout as Layout>::DiffContainer as BatchContainer>::Owned

Alias for an owned diff of a layout.
Source§

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

Alias for an borrowed diff of a layout.
Source§

type KeyContainer = <<L as WithLayout>::Layout as Layout>::KeyContainer

Container for update keys.
Source§

type ValContainer = <<L as WithLayout>::Layout as Layout>::ValContainer

Container for update vals.
Source§

type TimeContainer = <<L as WithLayout>::Layout as Layout>::TimeContainer

Container for times.
Source§

type DiffContainer = <<L as WithLayout>::Layout as Layout>::DiffContainer

Container for diffs.
Source§

fn owned_key(key: <L as LayoutExt>::Key<'_>) -> <L as LayoutExt>::KeyOwn

Construct an owned key from a reference.
Source§

fn owned_val(val: <L as LayoutExt>::Val<'_>) -> <L as LayoutExt>::ValOwn

Construct an owned val from a reference.
Source§

fn owned_time(time: <L as LayoutExt>::TimeGat<'_>) -> <L as LayoutExt>::Time

Construct an owned time from a reference.
Source§

fn owned_diff(diff: <L as LayoutExt>::DiffGat<'_>) -> <L as LayoutExt>::Diff

Construct an owned diff from a reference.
Source§

fn clone_time_onto( time: <L as LayoutExt>::TimeGat<'_>, onto: &mut <L as LayoutExt>::Time, )

Clones a reference time onto an owned time.
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>,

Source§

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>,

Source§

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>,