File tree 1 file changed +15
-36
lines changed
1 file changed +15
-36
lines changed Original file line number Diff line number Diff line change @@ -320,57 +320,36 @@ impl Mappings {
320
320
self . v . iter ( )
321
321
}
322
322
323
+ fn binary_search ( & self , addr : Size ) -> Result < usize , usize > {
324
+ self . v . binary_search_by ( |map| {
325
+ if map. range . start > addr {
326
+ Ordering :: Greater
327
+ } else if map. range . end < addr {
328
+ Ordering :: Less
329
+ } else {
330
+ Ordering :: Equal
331
+ }
332
+ } )
333
+ }
334
+
323
335
pub fn insert ( & mut self , new : Mapping ) {
324
- let idx = self
325
- . v
326
- . binary_search_by ( |map| {
327
- if map. range . start > new. range . start {
328
- Ordering :: Greater
329
- } else if map. range . end < new. range . start {
330
- Ordering :: Less
331
- } else {
332
- Ordering :: Equal
333
- }
334
- } )
335
- . unwrap_err ( ) ;
336
+ let idx = self . binary_search ( new. range . start ) . unwrap_err ( ) ;
336
337
self . v . insert ( idx, new) ;
337
338
}
338
339
339
340
pub fn remove ( & mut self , addr : Size ) -> Option < Mapping > {
340
341
if !self . v . get ( 0 ) ?. contains ( addr) && !self . v . last ( ) ?. contains ( addr) {
341
342
return None ;
342
343
}
343
- let idx = self
344
- . v
345
- . binary_search_by ( |map| {
346
- if map. range . start > addr {
347
- Ordering :: Greater
348
- } else if map. range . end < addr {
349
- Ordering :: Less
350
- } else {
351
- Ordering :: Equal
352
- }
353
- } )
354
- . ok ( ) ?;
344
+ let idx = self . binary_search ( addr) . ok ( ) ?;
355
345
Some ( self . v . remove ( idx) )
356
346
}
357
347
358
348
pub fn get ( & self , addr : Size ) -> Option < & Mapping > {
359
349
if !self . v . get ( 0 ) ?. contains ( addr) && !self . v . last ( ) ?. contains ( addr) {
360
350
return None ;
361
351
}
362
- let idx = self
363
- . v
364
- . binary_search_by ( |map| {
365
- if map. range . start > addr {
366
- Ordering :: Greater
367
- } else if map. range . end < addr {
368
- Ordering :: Less
369
- } else {
370
- Ordering :: Equal
371
- }
372
- } )
373
- . ok ( ) ?;
352
+ let idx = self . binary_search ( addr) . ok ( ) ?;
374
353
self . v . get ( idx)
375
354
}
376
355
}
You can’t perform that action at this time.
0 commit comments