pub struct CursorTactic<B1, B2, Bu, L, P>where
B1: Navigable,
B2: Navigable,
for<'a> B2::Cursor: Cursor<Key<'a> = <B1::Cursor as Cursor>::Key<'a>, ValOwn: Data, Time = <<B1 as Navigable>::Cursor as Cursor>::Time>,{ /* private fields */ }Expand description
The conventional cursor-based ReduceTactic.
It builds a CursorList over the input, output, and new-batch
updates and replays them together per key, applying logic and shaping output with push. It holds
the outstanding synthetic interesting (key, time) moments across activations, and reasons only
about times: capabilities are the driver’s concern.
The conventional cursor-based ReduceTactic.
Implementations§
Source§impl<B1, B2, Bu, L, P> CursorTactic<B1, B2, Bu, L, P>
impl<B1, B2, Bu, L, P> CursorTactic<B1, B2, Bu, L, P>
Trait Implementations§
Source§fn retire(
&mut self,
source_batches: Vec<B1>,
output_batches: Vec<B2>,
input_batches: Vec<B1>,
lower: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>,
upper: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>,
held: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>,
) -> (Option<Span<<<B1 as Navigable>::Cursor as Cursor>::Time, B2>>, Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>)
fn retire( &mut self, source_batches: Vec<B1>, output_batches: Vec<B2>, input_batches: Vec<B1>, lower: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>, upper: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>, held: &Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>, ) -> (Option<Span<<<B1 as Navigable>::Cursor as Cursor>::Time, B2>>, Antichain<<<B1 as Navigable>::Cursor as Cursor>::Time>)
Retire the interval
[lower, upper), producing the output batch it informs. Read moreAuto Trait Implementations§
impl<B1, B2, Bu, L, P> Freeze for CursorTactic<B1, B2, Bu, L, P>where
<<B2 as Navigable>::Cursor as Cursor>::ValOwn: for<'a> Sized,
L: Freeze,
P: Freeze,
<<B1 as Navigable>::Cursor as Cursor>::KeyContainer: Freeze,
<<B1 as Navigable>::Cursor as Cursor>::TimeContainer: Freeze,
Vec<<<B1 as Navigable>::Cursor as Cursor>::Time>: Freeze,
PhantomData<(B2, Bu)>: Freeze,
impl<B1, B2, Bu, L, P> RefUnwindSafe for CursorTactic<B1, B2, Bu, L, P>where
<<B2 as Navigable>::Cursor as Cursor>::ValOwn: for<'a> Sized,
L: RefUnwindSafe,
P: RefUnwindSafe,
<<B1 as Navigable>::Cursor as Cursor>::KeyContainer: RefUnwindSafe,
<<B1 as Navigable>::Cursor as Cursor>::TimeContainer: RefUnwindSafe,
Vec<<<B1 as Navigable>::Cursor as Cursor>::Time>: RefUnwindSafe,
PhantomData<(B2, Bu)>: RefUnwindSafe,
impl<B1, B2, Bu, L, P> Send for CursorTactic<B1, B2, Bu, L, P>
impl<B1, B2, Bu, L, P> Sync for CursorTactic<B1, B2, Bu, L, P>
impl<B1, B2, Bu, L, P> Unpin for CursorTactic<B1, B2, Bu, L, P>
impl<B1, B2, Bu, L, P> UnsafeUnpin for CursorTactic<B1, B2, Bu, L, P>where
<<B2 as Navigable>::Cursor as Cursor>::ValOwn: for<'a> Sized,
L: UnsafeUnpin,
P: UnsafeUnpin,
<<B1 as Navigable>::Cursor as Cursor>::KeyContainer: UnsafeUnpin,
<<B1 as Navigable>::Cursor as Cursor>::TimeContainer: UnsafeUnpin,
Vec<<<B1 as Navigable>::Cursor as Cursor>::Time>: UnsafeUnpin,
PhantomData<(B2, Bu)>: UnsafeUnpin,
impl<B1, B2, Bu, L, P> UnwindSafe for CursorTactic<B1, B2, Bu, L, P>where
<<B2 as Navigable>::Cursor as Cursor>::ValOwn: for<'a> Sized,
L: UnwindSafe,
P: UnwindSafe,
<<B1 as Navigable>::Cursor as Cursor>::KeyContainer: UnwindSafe,
<<B1 as Navigable>::Cursor as Cursor>::TimeContainer: UnwindSafe,
Vec<<<B1 as Navigable>::Cursor as Cursor>::Time>: UnwindSafe,
PhantomData<(B2, Bu)>: 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.