MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / lookup_range

Method lookup_range

nodedb/src/engine/kv/index.rs:81–100  ·  view source on GitHub ↗

Range lookup: find all primary keys where field value is in [lower, upper). `lower` = None means unbounded start. `upper` = None means unbounded end.

(&self, lower: Option<&[u8]>, upper: Option<&[u8]>)

Source from the content-addressed store, hash-verified

79 ///
80 /// `lower` = None means unbounded start. `upper` = None means unbounded end.
81 pub fn lookup_range(&self, lower: Option<&[u8]>, upper: Option<&[u8]>) -> Vec<(&[u8], &[u8])> {
82 use std::ops::Bound;
83
84 let lo = match lower {
85 Some(l) => Bound::Included(l.to_vec()),
86 None => Bound::Unbounded,
87 };
88 let hi = match upper {
89 Some(u) => Bound::Excluded(u.to_vec()),
90 None => Bound::Unbounded,
91 };
92
93 let mut results = Vec::new();
94 for (value, keys) in self.tree.range((lo, hi)) {
95 for key in keys {
96 results.push((value.as_slice(), key.as_slice()));
97 }
98 }
99 results
100 }
101
102 /// Total number of index entries (sum of all primary key sets).
103 pub fn entry_count(&self) -> usize {

Callers 1

field_index_range_lookupFunction · 0.80

Calls 6

to_vecMethod · 0.45
rangeMethod · 0.45
pushMethod · 0.45
as_sliceMethod · 0.45
findMethod · 0.45
iterMethod · 0.45

Tested by 1

field_index_range_lookupFunction · 0.64