Skip to content

Commit d107b92

Browse files
committed
add private function ivcec_to_u32 in keyvalue
1 parent 7182d8a commit d107b92

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,21 +383,23 @@ 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)?;
410389

411390
Ok(last_index)
412391
}
413392
}
414393

394+
fn ivec_to_u32(b: sled::IVec) -> Result<u32, Error> {
395+
let array: [u8; 4] = b
396+
.as_ref()
397+
.try_into()
398+
.map_err(|_| Error::InvalidU32Bytes(b.to_vec()))?;
399+
let val = u32::from_be_bytes(array);
400+
Ok(val)
401+
}
402+
415403
impl BatchDatabase for Tree {
416404
type Batch = sled::Batch;
417405

0 commit comments

Comments
 (0)