@@ -164,16 +164,9 @@ macro_rules! impl_batch_operations {
164
164
fn del_last_index( & mut self , keychain: KeychainKind ) -> Result <Option <u32 >, Error > {
165
165
let key = MapKey :: LastIndex ( keychain) . as_map_key( ) ;
166
166
let res = self . remove( key) ;
167
- let res = $process_delete!( res) ;
168
-
169
- match res {
170
- None => Ok ( None ) ,
171
- Some ( b) => {
172
- let array: [ u8 ; 4 ] = b. as_ref( ) . try_into( ) . map_err( |_| Error :: InvalidU32Bytes ( b. to_vec( ) ) ) ?;
173
- let val = u32 :: from_be_bytes( array) ;
174
- Ok ( Some ( val) )
175
- }
176
- }
167
+ $process_delete!( res)
168
+ . map( ivec_to_u32)
169
+ . transpose( )
177
170
}
178
171
179
172
fn del_sync_time( & mut self ) -> Result <Option <SyncTime >, Error > {
@@ -349,14 +342,7 @@ impl Database for Tree {
349
342
fn get_last_index ( & self , keychain : KeychainKind ) -> Result < Option < u32 > , Error > {
350
343
let key = MapKey :: LastIndex ( keychain) . as_map_key ( ) ;
351
344
self . get ( key) ?
352
- . map ( |b| -> Result < _ , Error > {
353
- let array: [ u8 ; 4 ] = b
354
- . as_ref ( )
355
- . try_into ( )
356
- . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
357
- let val = u32:: from_be_bytes ( array) ;
358
- Ok ( val)
359
- } )
345
+ . map ( ivec_to_u32)
360
346
. transpose ( )
361
347
}
362
348
@@ -385,20 +371,22 @@ impl Database for Tree {
385
371
386
372
Some ( new. to_be_bytes ( ) . to_vec ( ) )
387
373
} ) ?
388
- . map_or ( Ok ( 0 ) , |b| -> Result < _ , Error > {
389
- let array: [ u8 ; 4 ] = b
390
- . as_ref ( )
391
- . try_into ( )
392
- . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
393
- let val = u32:: from_be_bytes ( array) ;
394
- Ok ( val)
395
- } ) ?;
374
+ . map_or ( Ok ( 0 ) , ivec_to_u32) ?;
396
375
397
376
Tree :: flush ( self ) . map ( |_| ( ) ) ?;
398
377
Ok ( last_index)
399
378
}
400
379
}
401
380
381
+ fn ivec_to_u32 ( b : sled:: IVec ) -> Result < u32 , Error > {
382
+ let array: [ u8 ; 4 ] = b
383
+ . as_ref ( )
384
+ . try_into ( )
385
+ . map_err ( |_| Error :: InvalidU32Bytes ( b. to_vec ( ) ) ) ?;
386
+ let val = u32:: from_be_bytes ( array) ;
387
+ Ok ( val)
388
+ }
389
+
402
390
impl BatchDatabase for Tree {
403
391
type Batch = sled:: Batch ;
404
392
0 commit comments