Skip to content

Commit bfaef77

Browse files
committed
add private function ivcec_to_u32 in keyvalue
1 parent 4962711 commit bfaef77

File tree

1 file changed

+14
-26
lines changed

1 file changed

+14
-26
lines changed

src/database/keyvalue.rs

+14-26
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,9 @@ macro_rules! impl_batch_operations {
166166
fn del_last_index(&mut self, keychain: KeychainKind) -> Result<Option<u32>, Error> {
167167
let key = MapKey::LastIndex(keychain).as_map_key();
168168
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()
179172
}
180173

181174
fn del_sync_time(&mut self) -> Result<Option<SyncTime>, Error> {
@@ -361,14 +354,7 @@ impl Database for Tree {
361354
fn get_last_index(&self, keychain: KeychainKind) -> Result<Option<u32>, Error> {
362355
let key = MapKey::LastIndex(keychain).as_map_key();
363356
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)
372358
.transpose()
373359
}
374360

@@ -397,20 +383,22 @@ impl Database for Tree {
397383

398384
Some(new.to_be_bytes().to_vec())
399385
})?
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)?;
408387

409388
Tree::flush(self).map(|_| ())?;
410389
Ok(last_index)
411390
}
412391
}
413392

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+
414402
impl BatchDatabase for Tree {
415403
type Batch = sled::Batch;
416404

0 commit comments

Comments
 (0)