pub struct CursorTactic<B0, B1, L, CB>where
B0: Navigable,
B1: Navigable,
B1::Cursor: for<'a> Cursor<Key<'a> = <B0::Cursor as Cursor>::Key<'a>, Time = <B0::Cursor as Cursor>::Time>,{ /* private fields */ }Expand description
The conventional cursor-based JoinTactic.
It builds a CursorList over each input batch list and plays the merge-join out at whatever rate
the driver’s fuel allows. Each prepared unit joins a B0-side cursor against a B1-side cursor,
emitting (val0, val1) to logic and yielding the output containers logic fills. logic is
shared across all outstanding units (an Rc<RefCell<_>>), preserving the single mutable-state
semantics of one closure threaded through every match — each unit is a self-contained 'static
iterator, so it cannot borrow the tactic.
It is parameterized by the builder CB into which logic pushes output; the JoinTactic it
implements is over the container CB yields (CB::Container).
Implementations§
Source§impl<B0, B1, L, CB> CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> CursorTactic<B0, B1, L, CB>
Trait Implementations§
Auto Trait Implementations§
impl<B0, B1, L, CB> !RefUnwindSafe for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> !Send for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> !Sync for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> !UnwindSafe for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> Freeze for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> Unpin for CursorTactic<B0, B1, L, CB>
impl<B0, B1, L, CB> UnsafeUnpin for CursorTactic<B0, B1, L, CB>
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.