File tree Expand file tree Collapse file tree 1 file changed +5
-18
lines changed Expand file tree Collapse file tree 1 file changed +5
-18
lines changed Original file line number Diff line number Diff line change @@ -348,24 +348,11 @@ impl Store {
348
348
pub fn difference_with ( & mut self , other : & Self ) {
349
349
match ( self , other) {
350
350
( & mut Array ( ref mut vec1) , & Array ( ref vec2) ) => {
351
- let mut i1 = 0usize ;
352
- let mut iter2 = vec2. iter ( ) ;
353
- let mut current2 = iter2. next ( ) ;
354
- while i1 < vec1. len ( ) {
355
- match current2. map ( |c2| vec1[ i1] . cmp ( c2) ) {
356
- None => break ,
357
- Some ( Less ) => {
358
- i1 += 1 ;
359
- }
360
- Some ( Greater ) => {
361
- current2 = iter2. next ( ) ;
362
- }
363
- Some ( Equal ) => {
364
- vec1. remove ( i1) ;
365
- current2 = iter2. next ( ) ;
366
- }
367
- }
368
- }
351
+ let mut i = 0 ;
352
+ vec1. retain ( |x| {
353
+ i += vec2. iter ( ) . skip ( i) . position ( |y| y >= x) . unwrap_or ( vec2. len ( ) ) ;
354
+ vec2. get ( i) . map_or ( true , |y| x != y)
355
+ } ) ;
369
356
}
370
357
( ref mut this @ & mut Bitmap ( ..) , & Array ( ref vec2) ) => {
371
358
for index in vec2. iter ( ) {
You can’t perform that action at this time.
0 commit comments