Struct differential_dataflow::trace::implementations::ord_neu::OrdKeyBatch
source · 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>
impl<L: Layout> Batch for OrdKeyBatch<L>
source§fn begin_merge(
&self,
other: &Self,
compaction_frontier: AntichainRef<'_, <L::Target as Update>::Time>,
) -> Self::Merger
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>
impl<L: Layout> BatchReader for OrdKeyBatch<L>
§type Key<'a> = <<L as Layout>::KeyContainer as BatchContainer>::ReadItem<'a>
type Key<'a> = <<L as Layout>::KeyContainer as BatchContainer>::ReadItem<'a>
Key by which updates are indexed.
§type TimeGat<'a> = <<L as Layout>::TimeContainer as BatchContainer>::ReadItem<'a>
type TimeGat<'a> = <<L as Layout>::TimeContainer as BatchContainer>::ReadItem<'a>
Borrowed form of timestamp.
§type DiffGat<'a> = <<L as Layout>::DiffContainer as BatchContainer>::ReadItem<'a>
type DiffGat<'a> = <<L as Layout>::DiffContainer as BatchContainer>::ReadItem<'a>
Borrowed form of update difference.
source§fn description(&self) -> &Description<<L::Target as Update>::Time>
fn description(&self) -> &Description<<L::Target as Update>::Time>
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> 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>,
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>::Target as Update>::Time: 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>::Target as Update>::Time: 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>::Target as Update>::Time: 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>::Target as Update>::Time: 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>::Target as Update>::Time: 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<'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
.