File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -359,23 +359,25 @@ impl<'a> Iterator for NewRocksDbSkipIterator<'a> {
359359 type Item = Result < Tuple > ;
360360
361361 fn next ( & mut self ) -> Option < Self :: Item > {
362- for result in & mut self . inner {
363- match result {
364- Ok ( ( k, v) ) => {
365- if k. as_ref ( ) >= self . upper_bound . as_slice ( ) {
362+ loop {
363+ self . inner . set_mode ( rocksdb:: IteratorMode :: From ( & self . next_bound , rocksdb:: Direction :: Forward ) ) ;
364+ match self . inner . next ( ) {
365+ None => return None ,
366+ Some ( Ok ( ( k_slice, v_slice) ) ) => {
367+ if self . upper_bound . as_slice ( ) <= k_slice. as_ref ( ) {
366368 return None ;
367369 }
368- if let Some ( mut tup) =
369- check_key_for_validity ( & k, self . valid_at , None ) . 0
370- {
371- extend_tuple_from_v ( & mut tup, & v) ;
370+
371+ let ( ret, nxt_bound) = check_key_for_validity ( k_slice. as_ref ( ) , self . valid_at , None ) ;
372+ self . next_bound = nxt_bound;
373+ if let Some ( mut tup) = ret {
374+ extend_tuple_from_v ( & mut tup, v_slice. as_ref ( ) ) ;
372375 return Some ( Ok ( tup) ) ;
373376 }
374- }
375- Err ( e) => return Some ( Err ( miette ! ( "Iterator error : {}" , e) ) ) ,
377+ } ,
378+ Some ( Err ( e) ) => return Some ( Err ( miette ! ( "Iterator Error : {}" , e) ) ) ,
376379 }
377380 }
378- None
379381 }
380382}
381383
You can’t perform that action at this time.
0 commit comments