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>
impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> Batch for OrdKeyBatch<L>
Source§type Merger = OrdKeyMerger<L>
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
fn begin_merge( &self, other: &Self, compaction_frontier: AntichainRef<'_, Time<L>>, ) -> Self::Merger
Initiates the merging of consecutive batches. Read more
Source§impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> BatchReader for OrdKeyBatch<L>
impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> BatchReader for OrdKeyBatch<L>
Source§type Cursor = OrdKeyCursor<L>
type Cursor = OrdKeyCursor<L>
The type used to enumerate the batch’s contents.
Source§fn description(&self) -> &Description<Time<L>>
fn description(&self) -> &Description<Time<L>>
Describes the times of the updates in the batch.
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>,
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>,
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>
impl<L: Layout> Merger<OrdKeyBatch<L>> for OrdKeyMerger<L>
Source§fn new(
batch1: &OrdKeyBatch<L>,
batch2: &OrdKeyBatch<L>,
compaction_frontier: AntichainRef<'_, Time<L>>,
) -> Self
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>
fn done(self) -> OrdKeyBatch<L>
Extracts merged results. Read more
Source§fn work(
&mut self,
source1: &OrdKeyBatch<L>,
source2: &OrdKeyBatch<L>,
fuel: &mut isize,
)
fn work( &mut self, source1: &OrdKeyBatch<L>, source2: &OrdKeyBatch<L>, fuel: &mut isize, )
Perform some amount of work, decrementing
fuel
. Read moreSource§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>,
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§impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> WithLayout for OrdKeyBatch<L>
impl<L: for<'a> Layout<ValContainer: BatchContainer<ReadItem<'a> = &'a ()>>> WithLayout for OrdKeyBatch<L>
Auto Trait Implementations§
impl<L> Freeze for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: Freeze,
<L as Layout>::OffsetContainer: Freeze,
<L as Layout>::TimeContainer: Freeze,
<L as Layout>::DiffContainer: Freeze,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Freeze,
impl<L> RefUnwindSafe for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: RefUnwindSafe,
<L as Layout>::OffsetContainer: RefUnwindSafe,
<L as Layout>::TimeContainer: RefUnwindSafe,
<L as Layout>::DiffContainer: RefUnwindSafe,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: RefUnwindSafe,
impl<L> Send for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: Send,
<L as Layout>::OffsetContainer: Send,
<L as Layout>::TimeContainer: Send,
<L as Layout>::DiffContainer: Send,
impl<L> Sync for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: Sync,
<L as Layout>::OffsetContainer: Sync,
<L as Layout>::TimeContainer: Sync,
<L as Layout>::DiffContainer: Sync,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Sync,
impl<L> Unpin for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: Unpin,
<L as Layout>::OffsetContainer: Unpin,
<L as Layout>::TimeContainer: Unpin,
<L as Layout>::DiffContainer: Unpin,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Unpin,
impl<L> UnwindSafe for OrdKeyBatch<L>where
<L as Layout>::KeyContainer: UnwindSafe,
<L as Layout>::OffsetContainer: UnwindSafe,
<L as Layout>::TimeContainer: UnwindSafe,
<L as Layout>::DiffContainer: UnwindSafe,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: RefUnwindSafe + UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<L> LayoutExt for Lwhere
L: WithLayout,
impl<L> LayoutExt for Lwhere
L: WithLayout,
Source§type KeyOwn = <<<L as WithLayout>::Layout as Layout>::KeyContainer as BatchContainer>::Owned
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>
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
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>
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
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>
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
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>
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
type KeyContainer = <<L as WithLayout>::Layout as Layout>::KeyContainer
Container for update keys.
Source§type ValContainer = <<L as WithLayout>::Layout as Layout>::ValContainer
type ValContainer = <<L as WithLayout>::Layout as Layout>::ValContainer
Container for update vals.
Source§type TimeContainer = <<L as WithLayout>::Layout as Layout>::TimeContainer
type TimeContainer = <<L as WithLayout>::Layout as Layout>::TimeContainer
Container for times.
Source§type DiffContainer = <<L as WithLayout>::Layout as Layout>::DiffContainer
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
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
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
fn owned_time(time: <L as LayoutExt>::TimeGat<'_>) -> <L as LayoutExt>::Time
Construct an owned time from a reference.
Source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
Source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.