Struct differential_dataflow::trace::implementations::merge_batcher_flat::FlatcontainerMerger
source · pub struct FlatcontainerMerger<MC> { /* private fields */ }
Expand description
A merger for flat stacks.
MC
is a Region
that implements MergerChunk
.
Trait Implementations§
source§impl<MC> Default for FlatcontainerMerger<MC>
impl<MC> Default for FlatcontainerMerger<MC>
source§impl<MC> Merger for FlatcontainerMerger<MC>where
for<'a> MC: MergerChunk + Clone + 'static + ReserveItems<<MC as Region>::ReadItem<'a>> + Push<<MC as Region>::ReadItem<'a>> + Push<((MC::Key<'a>, MC::Val<'a>), MC::Time<'a>, &'a MC::DiffOwned)> + Push<((MC::Key<'a>, MC::Val<'a>), MC::Time<'a>, MC::Diff<'a>)>,
for<'a> MC::Time<'a>: PartialOrder<MC::TimeOwned> + Copy + IntoOwned<'a, Owned = MC::TimeOwned>,
for<'a> MC::Diff<'a>: IntoOwned<'a, Owned = MC::DiffOwned>,
for<'a> MC::TimeOwned: Ord + PartialOrder + PartialOrder<MC::Time<'a>> + Data,
for<'a> MC::DiffOwned: Default + Semigroup + Semigroup<MC::Diff<'a>> + Data,
impl<MC> Merger for FlatcontainerMerger<MC>where
for<'a> MC: MergerChunk + Clone + 'static + ReserveItems<<MC as Region>::ReadItem<'a>> + Push<<MC as Region>::ReadItem<'a>> + Push<((MC::Key<'a>, MC::Val<'a>), MC::Time<'a>, &'a MC::DiffOwned)> + Push<((MC::Key<'a>, MC::Val<'a>), MC::Time<'a>, MC::Diff<'a>)>,
for<'a> MC::Time<'a>: PartialOrder<MC::TimeOwned> + Copy + IntoOwned<'a, Owned = MC::TimeOwned>,
for<'a> MC::Diff<'a>: IntoOwned<'a, Owned = MC::DiffOwned>,
for<'a> MC::TimeOwned: Ord + PartialOrder + PartialOrder<MC::Time<'a>> + Data,
for<'a> MC::DiffOwned: Default + Semigroup + Semigroup<MC::Diff<'a>> + Data,
§type Time = <MC as MergerChunk>::TimeOwned
type Time = <MC as MergerChunk>::TimeOwned
The type of time in frontiers to extract updates.
§type Output = FlatStack<MC>
type Output = FlatStack<MC>
The output type
TODO: This should be replaced by
Chunk
or another container once the builder understands
building from a complete chain.source§fn merge(
&mut self,
list1: Vec<Self::Chunk>,
list2: Vec<Self::Chunk>,
output: &mut Vec<Self::Chunk>,
stash: &mut Vec<Self::Chunk>,
)
fn merge( &mut self, list1: Vec<Self::Chunk>, list2: Vec<Self::Chunk>, output: &mut Vec<Self::Chunk>, stash: &mut Vec<Self::Chunk>, )
Merge chains into an output chain.
source§fn extract(
&mut self,
merged: Vec<Self::Chunk>,
upper: AntichainRef<'_, Self::Time>,
frontier: &mut Antichain<Self::Time>,
readied: &mut Vec<Self::Chunk>,
kept: &mut Vec<Self::Chunk>,
stash: &mut Vec<Self::Chunk>,
)
fn extract( &mut self, merged: Vec<Self::Chunk>, upper: AntichainRef<'_, Self::Time>, frontier: &mut Antichain<Self::Time>, readied: &mut Vec<Self::Chunk>, kept: &mut Vec<Self::Chunk>, stash: &mut Vec<Self::Chunk>, )
Extract ready updates based on the
upper
frontier.source§fn seal<B: Builder<Input = Self::Output, Time = Self::Time>>(
chain: &mut Vec<Self::Chunk>,
lower: AntichainRef<'_, Self::Time>,
upper: AntichainRef<'_, Self::Time>,
since: AntichainRef<'_, Self::Time>,
) -> B::Output
fn seal<B: Builder<Input = Self::Output, Time = Self::Time>>( chain: &mut Vec<Self::Chunk>, lower: AntichainRef<'_, Self::Time>, upper: AntichainRef<'_, Self::Time>, since: AntichainRef<'_, Self::Time>, ) -> B::Output
Build from a chain
TODO: We can move this entirely to
MergeBatcher
once builders can accepts chains.Auto Trait Implementations§
impl<MC> Freeze for FlatcontainerMerger<MC>
impl<MC> RefUnwindSafe for FlatcontainerMerger<MC>where
MC: RefUnwindSafe,
impl<MC> Send for FlatcontainerMerger<MC>where
MC: Send,
impl<MC> Sync for FlatcontainerMerger<MC>where
MC: Sync,
impl<MC> Unpin for FlatcontainerMerger<MC>where
MC: Unpin,
impl<MC> UnwindSafe for FlatcontainerMerger<MC>where
MC: 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
.