File tree Expand file tree Collapse file tree 2 files changed +18
-1
lines changed
Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change @@ -551,7 +551,11 @@ impl<B: Borrow<[u64; BITMAP_LENGTH]>> BitmapIter<B> {
551551 } else if cmp == Ordering :: Equal {
552552 ( self . value , & mut self . value )
553553 } else {
554- ( 0 , & mut self . value )
554+ // New key is less than original key and key_back, this iterator is now empty
555+ self . key_back = self . key ;
556+ self . value = 0 ;
557+ self . value_back = 0 ;
558+ return ;
555559 }
556560 }
557561 } ;
Original file line number Diff line number Diff line change @@ -298,3 +298,16 @@ fn advance_bitset_front_and_back_past_each_other() {
298298 iter. advance_to ( 300 ) ;
299299 assert_eq ! ( iter. next( ) , None ) ;
300300}
301+
302+ #[ test]
303+ fn combine_with_nth ( ) {
304+ let mut bitmap = RoaringBitmap :: new ( ) ;
305+ bitmap. insert_range ( 0 ..=0xFFFF ) ;
306+ bitmap. remove_run_compression ( ) ;
307+ let mut iter = bitmap. iter ( ) ;
308+
309+ // Use nth to skip to a specific position
310+ assert_eq ! ( iter. nth( 100 ) , Some ( 100 ) ) ;
311+ iter. advance_back_to ( 50 ) ;
312+ assert_eq ! ( iter. next_back( ) , None ) ;
313+ }
You can’t perform that action at this time.
0 commit comments