global: vec iter part 2

This commit is contained in:
nym21
2025-04-28 18:30:11 +02:00
parent 15e6ef8488
commit f9257ed04d
17 changed files with 426 additions and 505 deletions

View File

@@ -4,7 +4,7 @@ use brk_core::{
AddressBytes, AddressBytesHash, BlockHashPrefix, Height, OutputType, OutputTypeIndex, TxIndex,
TxidPrefix,
};
use brk_vec::{StoredIndex, Value, Version};
use brk_vec::{Value, Version};
use fjall::{PersistMode, TransactionalKeyspace};
use crate::Indexes;
@@ -88,8 +88,7 @@ impl Stores {
if starting_indexes.height != Height::ZERO {
vecs.height_to_blockhash
.into_iter()
.skip(starting_indexes.height.unwrap_to_usize())
.iter_at(starting_indexes.height)
.for_each(|(_, v)| {
let blockhashprefix = BlockHashPrefix::from(Value::into_inner(v));
self.blockhashprefix_to_height.remove(blockhashprefix);
@@ -235,8 +234,7 @@ impl Stores {
if starting_indexes.txindex != TxIndex::ZERO {
vecs.txindex_to_txid
.into_iter()
.skip(starting_indexes.txindex.unwrap_to_usize())
.iter_at(starting_indexes.txindex)
.for_each(|(txindex, txid)| {
let txidprefix = TxidPrefix::from(&txid.into_inner());

View File

@@ -45,14 +45,6 @@ where
pub fn get(&self, index: I) -> Result<Option<Value<'_, T>>> {
self.inner.get(index)
}
#[inline]
pub fn unwrap_cached_get(&mut self, index: I) -> Option<T> {
self.inner.unwrap_cached_get(index)
}
#[inline]
pub fn double_unwrap_cached_get(&mut self, index: I) -> T {
self.inner.double_unwrap_cached_get(index)
}
#[inline]
pub fn push_if_needed(&mut self, index: I, value: T) -> Result<()> {
@@ -124,6 +116,12 @@ where
pub fn iter(&self) -> StoredVecIterator<'_, I, T> {
self.into_iter()
}
pub fn iter_at(&self, i: I) -> StoredVecIterator<'_, I, T> {
let mut iter = self.into_iter();
iter.set(i);
iter
}
}
pub trait AnyIndexedVec: Send + Sync {