@@ -166,16 +166,9 @@ macro_rules! impl_batch_operations {
166
166
fn del_last_index( & mut self , keychain: KeychainKind ) -> Result <Option <u32 >, Error > {
167
167
let key = MapKey :: LastIndex ( keychain) . as_map_key( ) ;
168
168
let res = self . remove( key) ;
169
- let res = $process_delete!( res) ;
170
-
171
- match res {
172
- None => Ok ( None ) ,
173
- Some ( b) => {
174
- let array: [ u8 ; 4 ] = b. as_ref( ) . try_into( ) . map_err( |_| Error :: InvalidU32Bytes ( b. to_vec( ) ) ) ?;
175
- let val = u32 :: from_be_bytes( array) ;
176
- Ok ( Some ( val) )
177
- }
178
- }
169
+ $process_delete!( res)
170
+ . map( ivec_to_u32)
171
+ . transpose( )
179
172
}
180
173
181
174
fn del_sync_time( & mut self ) -> Result <Option <SyncTime >, Error > {
@@ -361,14 +354,7 @@ impl Database for Tree {
361
354
fn get_last_index ( & self , keychain : KeychainKind ) -> Result < Option < u32 > , Error > {
362
355
let key = MapKey :: LastIndex ( keychain) . as_map_key ( ) ;
363
356
self . get ( key) ?
364
- . map ( |b| -> Result < _ , Error > {
365
- let array: [ u8 ; 4 ] = b
366
- . as_ref ( )
367
- . try_into ( )
368
- . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
369
- let val = u32:: from_be_bytes ( array) ;
370
- Ok ( val)
371
- } )
357
+ . map ( ivec_to_u32)
372
358
. transpose ( )
373
359
}
374
360
@@ -397,20 +383,22 @@ impl Database for Tree {
397
383
398
384
Some ( new. to_be_bytes ( ) . to_vec ( ) )
399
385
} ) ?
400
- . map_or ( Ok ( 0 ) , |b| -> Result < _ , Error > {
401
- let array: [ u8 ; 4 ] = b
402
- . as_ref ( )
403
- . try_into ( )
404
- . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
405
- let val = u32:: from_be_bytes ( array) ;
406
- Ok ( val)
407
- } ) ?;
386
+ . map_or ( Ok ( 0 ) , ivec_to_u32) ?;
408
387
409
388
Tree :: flush ( self ) . map ( |_| ( ) ) ?;
410
389
Ok ( last_index)
411
390
}
412
391
}
413
392
393
+ fn ivec_to_u32 ( b : sled:: IVec ) -> Result < u32 , Error > {
394
+ let array: [ u8 ; 4 ] = b
395
+ . as_ref ( )
396
+ . try_into ( )
397
+ . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
398
+ let val = u32:: from_be_bytes ( array) ;
399
+ Ok ( val)
400
+ }
401
+
414
402
impl BatchDatabase for Tree {
415
403
type Batch = sled:: Batch ;
416
404
0 commit comments