pub struct OrdKeyBatch<L: Layout> {
pub storage: OrdKeyStorage<L>,
pub description: Description<Time<L>>,
pub updates: usize,
pub value: L::ValContainer,
}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: 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.
value: L::ValContainerSingle value to return if asked.
Implementations§
Source§impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> OrdKeyBatch<L>
impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> OrdKeyBatch<L>
Sourcepub fn create_value() -> L::ValContainer
pub fn create_value() -> L::ValContainer
Creates a container with one value, to slot in to self.value.
Trait Implementations§
Source§impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> Batch for OrdKeyBatch<L>
impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> 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: Layout<ValContainer: BatchContainer<Owned: Default>>> BatchReader for OrdKeyBatch<L>
impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> BatchReader for OrdKeyBatch<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 OrdKeyBatch<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 OrdKeyBatch<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<ValContainer: BatchContainer<Owned: Default>>> Merger<OrdKeyBatch<L>> for OrdKeyMerger<L>
impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> 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::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 OrdKeyBatch<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<ValContainer: BatchContainer<Owned: Default>>> WithLayout for OrdKeyBatch<L>
impl<L: Layout<ValContainer: BatchContainer<Owned: Default>>> WithLayout for OrdKeyBatch<L>
Auto Trait Implementations§
impl<L> Freeze for OrdKeyBatch<L>where
<L as Layout>::ValContainer: Freeze,
<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>::ValContainer: RefUnwindSafe,
<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>::ValContainer: Send,
<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>::ValContainer: Sync,
<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>::ValContainer: Unpin,
<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> UnsafeUnpin for OrdKeyBatch<L>where
<L as Layout>::ValContainer: UnsafeUnpin,
<L as Layout>::KeyContainer: UnsafeUnpin,
<L as Layout>::OffsetContainer: UnsafeUnpin,
<L as Layout>::TimeContainer: UnsafeUnpin,
<L as Layout>::DiffContainer: UnsafeUnpin,
<<L as Layout>::TimeContainer as BatchContainer>::Owned: UnsafeUnpin,
impl<L> UnwindSafe for OrdKeyBatch<L>where
<L as Layout>::ValContainer: UnwindSafe,
<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
impl<T> Data for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.