Skip to content

Commit 9947611

Browse files
committed
add private function ivcec_to_u32 in keyvalue
1 parent 58651d0 commit 9947611

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
@@ -164,16 +164,9 @@ macro_rules! impl_batch_operations {
164164
fn del_last_index(&mut self, keychain: KeychainKind) -> Result<Option<u32>, Error> {
165165
let key = MapKey::LastIndex(keychain).as_map_key();
166166
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()
177170
}
178171

179172
fn del_sync_time(&mut self) -> Result<Option<SyncTime>, Error> {
@@ -349,14 +342,7 @@ impl Database for Tree {
349342
fn get_last_index(&self, keychain: KeychainKind) -> Result<Option<u32>, Error> {
350343
let key = MapKey::LastIndex(keychain).as_map_key();
351344
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)
360346
.transpose()
361347
}
362348

@@ -385,20 +371,22 @@ impl Database for Tree {
385371

386372
Some(new.to_be_bytes().to_vec())
387373
})?
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)?;
396375

397376
Tree::flush(self).map(|_| ())?;
398377
Ok(last_index)
399378
}
400379
}
401380

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+
402390
impl BatchDatabase for Tree {
403391
type Batch = sled::Batch;
404392

0 commit comments

Comments
 (0)