File tree Expand file tree Collapse file tree 2 files changed +16
-0
lines changed
Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -808,6 +808,13 @@ impl<I: SliceIterator<Interval>> Iterator for RunIter<I> {
808808 }
809809
810810 fn nth ( & mut self , n : usize ) -> Option < Self :: Item > {
811+ if n > usize:: from ( u16:: MAX ) {
812+ // Consume the whole iterator
813+ self . intervals . nth ( self . intervals . as_slice ( ) . len ( ) ) ;
814+ self . forward_offset = 0 ;
815+ self . backward_offset = 0 ;
816+ return None ;
817+ }
811818 if let Some ( skip) = n. checked_sub ( 1 ) {
812819 let mut to_skip = skip as u64 ;
813820 loop {
Original file line number Diff line number Diff line change @@ -246,3 +246,12 @@ fn advance_run_front_and_back_past_each_other() {
246246 iter. advance_to ( 300 ) ;
247247 assert_eq ! ( iter. next( ) , None ) ;
248248}
249+
250+ #[ test]
251+ fn advance_run_with_nth ( ) {
252+ let mut bitmap = RoaringBitmap :: new ( ) ;
253+ bitmap. insert_range ( 36141 ..=224407 ) ;
254+ let mut iter = bitmap. iter ( ) ;
255+ iter. advance_back_to ( 101779 ) ;
256+ assert_eq ! ( iter. nth( 100563 ) , None ) ;
257+ }
You can’t perform that action at this time.
0 commit comments