pub trait ChunkedIdxTable:
Any
+ Send
+ Sync {
// Required methods
fn new_empty(&self) -> Box<dyn ChunkedIdxTable>;
fn reserve(&mut self, additional: usize);
fn num_keys(&self) -> IdxSize;
fn insert_key_chunk(&mut self, keys: HashKeys, track_unmatchable: bool);
fn probe(
&self,
hash_keys: &HashKeys,
table_match: &mut Vec<ChunkId<32>>,
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<ChunkId<32>>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize;
fn unmarked_keys(
&self,
out: &mut Vec<ChunkId<32>>,
offset: IdxSize,
limit: IdxSize,
) -> IdxSize;
}
Required Methods§
Sourcefn new_empty(&self) -> Box<dyn ChunkedIdxTable>
fn new_empty(&self) -> Box<dyn ChunkedIdxTable>
Creates a new empty ChunkedIdxTable similar to this one.
Sourcefn insert_key_chunk(&mut self, keys: HashKeys, track_unmatchable: bool)
fn insert_key_chunk(&mut self, keys: HashKeys, track_unmatchable: bool)
Inserts the given key chunk into this ChunkedIdxTable.
Sourcefn probe(
&self,
hash_keys: &HashKeys,
table_match: &mut Vec<ChunkId<32>>,
probe_match: &mut Vec<IdxSize>,
mark_matches: bool,
emit_unmatched: bool,
limit: IdxSize,
) -> IdxSize
fn probe( &self, hash_keys: &HashKeys, table_match: &mut Vec<ChunkId<32>>, probe_match: &mut Vec<IdxSize>, mark_matches: bool, emit_unmatched: bool, limit: IdxSize, ) -> IdxSize
Probe the table, updating table_match and probe_match with (ChunkId, IdxSize) pairs 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<ChunkId<32>>,
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<ChunkId<32>>, 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.