parser: db: improve iter function

This commit is contained in:
k
2024-10-29 19:38:52 +01:00
parent 4220034eab
commit 6eaeca1f3d
4 changed files with 39 additions and 35 deletions

View File

@@ -15,7 +15,7 @@ use derive_deref::{Deref, DerefMut};
//
// Possible compression: https://pijul.org/posts/sanakirja-zstd/
use sanakirja::{
btree::{self, page, Db_},
btree::{self, page, Db_, Iter},
direct_repr, Commit, Env, Error, MutTxn, RootDb, Storable, UnsizedStorable,
};
@@ -60,13 +60,8 @@ where
})
}
pub fn iter<F>(&self, callback: &mut F)
where
F: FnMut((&Key, &Value)),
{
btree::iter(&self.txn, &self.db, None)
.unwrap()
.for_each(|entry| callback(entry.unwrap()));
pub fn iter(&self) -> Iter<'_, MutTxn<Env, ()>, Key, Value, page::Page<Key, Value>> {
btree::iter(&self.txn, &self.db, None).unwrap()
}
pub fn get(&self, key: &Key) -> Option<&Value> {

View File

@@ -92,7 +92,11 @@ impl AddressIndexToAddressData {
.par_iter()
.map(|(_, database)| {
let mut s = AddressCohortsDurableStates::default();
database.iter(&mut |(_, a)| s.increment(a).unwrap());
database
.iter()
.map(|r| r.unwrap().1)
.for_each(|address_data| s.increment(address_data).unwrap());
s
})
.sum()