pub struct OrdValBatch<L: Layout> {
pub storage: OrdValStorage<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: OrdValStorage<L>The updates themselves.
description: Description<Time<L>>Description of the update times this layer represents.
updates: usizeThe 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 OrdValBatch<L>
impl<L: Layout> Batch for OrdValBatch<L>
Source§type Merger = OrdValMerger<L>
type Merger = OrdValMerger<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: Layout> BatchReader for OrdValBatch<L>
impl<L: Layout> BatchReader for OrdValBatch<L>
Source§type Time = <<L as Layout>::TimeContainer as BatchContainer>::Owned
type Time = <<L as Layout>::TimeContainer as BatchContainer>::Owned
The timestamp type of the batch’s updates. Read more
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 OrdValBatch<L>where
L::KeyContainer: Serialize + for<'a> Deserialize<'a>,
L::ValContainer: 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 OrdValBatch<L>where
L::KeyContainer: Serialize + for<'a> Deserialize<'a>,
L::ValContainer: 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<OrdValBatch<L>> for OrdValMerger<L>
impl<L: Layout> Merger<OrdValBatch<L>> for OrdValMerger<L>
Source§fn new(
batch1: &OrdValBatch<L>,
batch2: &OrdValBatch<L>,
compaction_frontier: AntichainRef<'_, Time<L>>,
) -> Self
fn new( batch1: &OrdValBatch<L>, batch2: &OrdValBatch<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) -> OrdValBatch<L>
fn done(self) -> OrdValBatch<L>
Extracts merged results. Read more
Source§fn work(
&mut self,
source1: &OrdValBatch<L>,
source2: &OrdValBatch<L>,
fuel: &mut isize,
)
fn work( &mut self, source1: &OrdValBatch<L>, source2: &OrdValBatch<L>, fuel: &mut isize, )
Perform some amount of work, decrementing
fuel. Read moreSource§impl<L: Layout> Serialize for OrdValBatch<L>where
L::KeyContainer: Serialize + for<'a> Deserialize<'a>,
L::ValContainer: 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 OrdValBatch<L>where
L::KeyContainer: Serialize + for<'a> Deserialize<'a>,
L::ValContainer: 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: Layout> WithLayout for OrdValBatch<L>
impl<L: Layout> WithLayout for OrdValBatch<L>
Auto Trait Implementations§
impl<L> Freeze for OrdValBatch<L>where
<L as Layout>::KeyContainer: Freeze,
<L as Layout>::OffsetContainer: Freeze,
<L as Layout>::ValContainer: Freeze,
<L as Layout>::TimeContainer: Freeze,
<L as Layout>::DiffContainer: Freeze,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Freeze,
impl<L> RefUnwindSafe for OrdValBatch<L>where
<L as Layout>::KeyContainer: RefUnwindSafe,
<L as Layout>::OffsetContainer: RefUnwindSafe,
<L as Layout>::ValContainer: RefUnwindSafe,
<L as Layout>::TimeContainer: RefUnwindSafe,
<L as Layout>::DiffContainer: RefUnwindSafe,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: RefUnwindSafe,
impl<L> Send for OrdValBatch<L>where
<L as Layout>::KeyContainer: Send,
<L as Layout>::OffsetContainer: Send,
<L as Layout>::ValContainer: Send,
<L as Layout>::TimeContainer: Send,
<L as Layout>::DiffContainer: Send,
impl<L> Sync for OrdValBatch<L>where
<L as Layout>::KeyContainer: Sync,
<L as Layout>::OffsetContainer: Sync,
<L as Layout>::ValContainer: Sync,
<L as Layout>::TimeContainer: Sync,
<L as Layout>::DiffContainer: Sync,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Sync,
impl<L> Unpin for OrdValBatch<L>where
<L as Layout>::KeyContainer: Unpin,
<L as Layout>::OffsetContainer: Unpin,
<L as Layout>::ValContainer: Unpin,
<L as Layout>::TimeContainer: Unpin,
<L as Layout>::DiffContainer: Unpin,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: Unpin,
impl<L> UnsafeUnpin for OrdValBatch<L>where
<L as Layout>::KeyContainer: UnsafeUnpin,
<L as Layout>::OffsetContainer: UnsafeUnpin,
<L as Layout>::ValContainer: UnsafeUnpin,
<L as Layout>::TimeContainer: UnsafeUnpin,
<L as Layout>::DiffContainer: UnsafeUnpin,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: UnsafeUnpin,
impl<L> UnwindSafe for OrdValBatch<L>where
<L as Layout>::KeyContainer: UnwindSafe,
<L as Layout>::OffsetContainer: UnwindSafe,
<L as Layout>::ValContainer: 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<'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.