pub(crate) trait SeekableRows:
Iterator<Item = Result<(Box<[u8]>, Box<[u8]>), rocksdb::Error>>
{
fn seek_to(&mut self, target: &[u8], reverse: bool);
}
impl<'a, D: rocksdb::DBAccess> SeekableRows for rocksdb::DBIteratorWithThreadMode<'a, D> {
fn seek_to(&mut self, target: &[u8], reverse: bool) {
let dir = if reverse {
rocksdb::Direction::Reverse
} else {
rocksdb::Direction::Forward
};
self.set_mode(rocksdb::IteratorMode::From(target, dir));
}
}
impl SeekableRows for Box<dyn SeekableRows + '_> {
fn seek_to(&mut self, target: &[u8], reverse: bool) {
(**self).seek_to(target, reverse)
}
}