File tree 1 file changed +12
-4
lines changed
1 file changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -458,8 +458,12 @@ where
458
458
match self . v . iter ( ) . position ( |x| ( self . pred ) ( x) ) {
459
459
None => self . finish ( ) ,
460
460
Some ( idx) => {
461
- let ret = Some ( unsafe { self . v . get_unchecked ( ..idx) } ) ;
462
- self . v = unsafe { self . v . get_unchecked ( idx + 1 ..) } ;
461
+ let ( left, right) =
462
+ // SAFETY: if v.iter().position returns Some(idx), that
463
+ // idx is definitely a valid index for v
464
+ unsafe { ( self . v . get_unchecked ( ..idx) , self . v . get_unchecked ( idx + 1 ..) ) } ;
465
+ let ret = Some ( left) ;
466
+ self . v = right;
463
467
ret
464
468
}
465
469
}
@@ -491,8 +495,12 @@ where
491
495
match self . v . iter ( ) . rposition ( |x| ( self . pred ) ( x) ) {
492
496
None => self . finish ( ) ,
493
497
Some ( idx) => {
494
- let ret = Some ( unsafe { self . v . get_unchecked ( idx + 1 ..) } ) ;
495
- self . v = unsafe { self . v . get_unchecked ( ..idx) } ;
498
+ let ( left, right) =
499
+ // SAFETY: if v.iter().rposition returns Some(idx), then
500
+ // idx is definitely a valid index for v
501
+ unsafe { ( self . v . get_unchecked ( ..idx) , self . v . get_unchecked ( idx + 1 ..) ) } ;
502
+ let ret = Some ( right) ;
503
+ self . v = left;
496
504
ret
497
505
}
498
506
}
You can’t perform that action at this time.
0 commit comments