in common/rusty_leveldb_sgx/src/block.rs [249:283]
fn seek(&mut self, to: &[u8]) {
self.reset();
let mut left = 0;
let mut right = if self.number_restarts() == 0 {
0
} else {
self.number_restarts() - 1
};
// Do a binary search over the restart points.
while left < right {
let middle = (left + right + 1) / 2;
self.seek_to_restart_point(middle);
let c = self.opt.cmp.cmp(&self.key, to);
if c == Ordering::Less {
left = middle;
} else {
right = middle - 1;
}
}
assert_eq!(left, right);
self.current_restart_ix = left;
self.offset = self.get_restart_point(left);
// Linear search from here on
while let Some((k, _)) = self.next() {
if self.opt.cmp.cmp(k.as_slice(), to) >= Ordering::Equal {
return;
}
}
}