dfir_rs/compiled/pull/half_join_state/
mod.rs1mod fold;
2mod fold_from;
3mod multiset;
4mod reduce;
5mod set;
6
7pub use fold::HalfJoinStateFold;
8pub use fold_from::HalfJoinStateFoldFrom;
9pub use multiset::HalfMultisetJoinState;
10pub use reduce::HalfJoinStateReduce;
11pub use set::HalfSetJoinState;
12use smallvec::SmallVec;
13
14pub trait HalfJoinState<Key, ValBuild, ValProbe> {
15 fn build(&mut self, k: Key, v: &ValBuild) -> bool;
18
19 fn probe(&mut self, k: &Key, v: &ValProbe) -> Option<(Key, ValProbe, ValBuild)>;
22
23 fn pop_match(&mut self) -> Option<(Key, ValProbe, ValBuild)>;
25 fn len(&self) -> usize;
26 fn is_empty(&self) -> bool {
27 self.len() == 0
28 }
29 fn iter(&self) -> std::collections::hash_map::Iter<'_, Key, SmallVec<[ValBuild; 1]>>;
30 fn full_probe(&self, k: &Key) -> std::slice::Iter<'_, ValBuild>;
31}