Struct dfir_rs::compiled::pull::HalfMultisetJoinState
source · pub struct HalfMultisetJoinState<Key, ValBuild, ValProbe> { /* private fields */ }
Trait Implementations§
source§impl<Key, ValBuild, ValProbe> Clear for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> Clear for HalfMultisetJoinState<Key, ValBuild, ValProbe>
source§impl<Key: Debug, ValBuild: Debug, ValProbe: Debug> Debug for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key: Debug, ValBuild: Debug, ValProbe: Debug> Debug for HalfMultisetJoinState<Key, ValBuild, ValProbe>
source§impl<Key, ValBuild, ValProbe> Default for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> Default for HalfMultisetJoinState<Key, ValBuild, ValProbe>
source§impl<Key, ValBuild, ValProbe> HalfJoinState<Key, ValBuild, ValProbe> for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> HalfJoinState<Key, ValBuild, ValProbe> for HalfMultisetJoinState<Key, ValBuild, ValProbe>
source§fn build(&mut self, k: Key, v: &ValBuild) -> bool
fn build(&mut self, k: Key, v: &ValBuild) -> bool
Insert a key value pair into the join state, currently this is always inserting into a hash table
If the key-value pair exists then it is implementation defined what happens, usually either two copies are stored or only one copy is stored.
source§fn probe(&mut self, k: &Key, v: &ValProbe) -> Option<(Key, ValProbe, ValBuild)>
fn probe(&mut self, k: &Key, v: &ValProbe) -> Option<(Key, ValProbe, ValBuild)>
This function does the actual joining part of the join. It looks up a key in the local join state and creates matches
The first match is return directly to the caller, and any additional matches are stored internally to be retrieved later with
pop_match
fn full_probe(&self, k: &Key) -> Iter<'_, ValBuild>
source§fn pop_match(&mut self) -> Option<(Key, ValProbe, ValBuild)>
fn pop_match(&mut self) -> Option<(Key, ValProbe, ValBuild)>
If there are any stored matches from previous calls to probe then this function will remove them one at a time and return it.
fn len(&self) -> usize
fn iter(&self) -> Iter<'_, Key, SmallVec<[ValBuild; 1]>>
fn is_empty(&self) -> bool
Auto Trait Implementations§
impl<Key, ValBuild, ValProbe> Freeze for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> RefUnwindSafe for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> Send for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> Sync for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> Unpin for HalfMultisetJoinState<Key, ValBuild, ValProbe>
impl<Key, ValBuild, ValProbe> UnwindSafe for HalfMultisetJoinState<Key, ValBuild, ValProbe>
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> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more