pub trait IdxTable:
Any
+ Send
+ Sync {
// Required methods
fn new_empty(&self) -> Box<dyn IdxTable>;
fn reserve(&mut self, additional: usize);
fn num_keys(&self) -> IdxSize;
fn insert_keys(&mut self, keys: &HashKeys, track_unmatchable: bool);
unsafe fn insert_keys_subset(
&mut self,
keys: &HashKeys,
subset: &[IdxSize],
track_unmatchable: bool,
);
fn probe(
&self,
hash_keys: &HashKeys,
table_match: &mut Vec<IdxSize>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize;
unsafe fn probe_subset(
&self,
hash_keys: &HashKeys,
subset: &[IdxSize],
table_match: &mut Vec<IdxSize>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize;
fn unmarked_keys(
&self,
out: &mut Vec<IdxSize>,
offset: IdxSize,
limit: IdxSize,
) -> IdxSize;
}Required Methods§
Sourcefn insert_keys(&mut self, keys: &HashKeys, track_unmatchable: bool)
fn insert_keys(&mut self, keys: &HashKeys, track_unmatchable: bool)
Inserts the given keys into this IdxTable.
Sourceunsafe fn insert_keys_subset(
&mut self,
keys: &HashKeys,
subset: &[IdxSize],
track_unmatchable: bool,
)
unsafe fn insert_keys_subset( &mut self, keys: &HashKeys, subset: &[IdxSize], track_unmatchable: bool, )
Inserts a subset of the given keys into this IdxTable.
§Safety
The provided subset indices must be in-bounds.
Sourcefn probe(
&self,
hash_keys: &HashKeys,
table_match: &mut Vec<IdxSize>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize
fn probe( &self, hash_keys: &HashKeys, table_match: &mut Vec<IdxSize>, probe_match: &mut Vec<IdxSize>, mark_matches: bool, emit_unmatched: bool, limit: IdxSize, ) -> IdxSize
Probe the table, adding an entry to table_match and probe_match for each match. Will stop processing new keys once limit matches have been generated, returning the number of keys processed.
If mark_matches is true, matches are marked in the table as such.
If emit_unmatched is true, for keys that do not have a match we emit a match with ChunkId::null() on the table match.
Sourceunsafe fn probe_subset(
&self,
hash_keys: &HashKeys,
subset: &[IdxSize],
table_match: &mut Vec<IdxSize>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize
unsafe fn probe_subset( &self, hash_keys: &HashKeys, subset: &[IdxSize], table_match: &mut Vec<IdxSize>, probe_match: &mut Vec<IdxSize>, mark_matches: bool, emit_unmatched: bool, limit: IdxSize, ) -> IdxSize
The same as probe, except it will only apply to the specified subset of keys.
§Safety
The provided subset indices must be in-bounds.