fn seek(&mut self, key: &[u8]) {
// TODO: detect and skip unneeded seek in iter.
self.index_iter.seek(key);
- self.index_iter.next().and_then(|e| {
- self.next_offset = usize::decode_var(e.value.as_slice())?.0;
- self.next_block().map(|_| {
- self.data_iter.as_mut().unwrap().seek(key);
+
+ self.index_iter
+ .next()
+ .and_then(|e| {
+ self.next_offset = usize::decode_var(e.value.as_slice())?.0;
+ self.next_block().map(|_| {
+ self.data_iter.as_mut().unwrap().seek(key);
+ })
})
- });
+ .or_else(|| {
+ self.next_offset = usize::MAX;
+ self.data_iter.take();
+ None
+ });
}
}