vec: rework part 1

This commit is contained in:
nym21
2025-04-09 16:31:31 +02:00
parent a7f2b24bac
commit 962254e511
29 changed files with 1627 additions and 946 deletions

View File

@@ -10,14 +10,14 @@ use std::{
use brk_core::CheckedSub;
use brk_exit::Exit;
use brk_vec::{
AnyStorableVec, Compressed, Error, MAX_CACHE_SIZE, Result, StorableVec, StoredIndex,
StoredType, Version,
AnyStoredVec, Compressed, Error, MAX_CACHE_SIZE, Result, StoredIndex, StoredType, StoredVec,
Version,
};
#[derive(Debug)]
pub struct ComputedVec<I, T> {
computed_version: Option<Version>,
vec: StorableVec<I, T>,
vec: StoredVec<I, T>,
}
impl<I, T> ComputedVec<I, T>
@@ -32,7 +32,7 @@ where
version: Version,
compressed: Compressed,
) -> brk_vec::Result<Self> {
let vec = StorableVec::forced_import(path, version, compressed)?;
let vec = StoredVec::forced_import(path, version, compressed)?;
Ok(Self {
computed_version: None,
@@ -89,19 +89,19 @@ where
self.vec.len()
}
pub fn vec(&self) -> &StorableVec<I, T> {
pub fn vec(&self) -> &StoredVec<I, T> {
&self.vec
}
pub fn mut_vec(&mut self) -> &mut StorableVec<I, T> {
pub fn mut_vec(&mut self) -> &mut StoredVec<I, T> {
&mut self.vec
}
pub fn any_vec(&self) -> &dyn AnyStorableVec {
pub fn any_vec(&self) -> &dyn AnyStoredVec {
&self.vec
}
pub fn mut_any_vec(&mut self) -> &mut dyn AnyStorableVec {
pub fn mut_any_vec(&mut self) -> &mut dyn AnyStoredVec {
&mut self.vec
}
@@ -130,14 +130,14 @@ where
pub fn compute_transform<A, B, F>(
&mut self,
max_from: A,
other: &mut StorableVec<A, B>,
other: &mut StoredVec<A, B>,
mut t: F,
exit: &Exit,
) -> Result<()>
where
A: StoredIndex,
B: StoredType,
F: FnMut((A, B, &mut Self, &mut StorableVec<A, B>)) -> (I, T),
F: FnMut((A, B, &mut Self, &mut StoredVec<A, B>)) -> (I, T),
{
self.validate_computed_version_or_reset_file(
Version::ZERO + self.version() + other.version(),
@@ -155,7 +155,7 @@ where
pub fn compute_inverse_more_to_less(
&mut self,
max_from: T,
other: &mut StorableVec<T, I>,
other: &mut StoredVec<T, I>,
exit: &Exit,
) -> Result<()>
where
@@ -182,8 +182,8 @@ where
pub fn compute_inverse_less_to_more(
&mut self,
max_from: T,
first_indexes: &mut StorableVec<T, I>,
last_indexes: &mut StorableVec<T, I>,
first_indexes: &mut StoredVec<T, I>,
last_indexes: &mut StoredVec<T, I>,
exit: &Exit,
) -> Result<()>
where
@@ -208,7 +208,7 @@ where
pub fn compute_last_index_from_first(
&mut self,
max_from: I,
first_indexes: &mut StorableVec<I, T>,
first_indexes: &mut StoredVec<I, T>,
final_len: usize,
exit: &Exit,
) -> Result<()>
@@ -243,8 +243,8 @@ where
pub fn compute_count_from_indexes<T2>(
&mut self,
max_from: I,
first_indexes: &mut StorableVec<I, T2>,
last_indexes: &mut StorableVec<I, T2>,
first_indexes: &mut StoredVec<I, T2>,
last_indexes: &mut StoredVec<I, T2>,
exit: &Exit,
) -> Result<()>
where
@@ -271,8 +271,8 @@ where
pub fn compute_is_first_ordered<A>(
&mut self,
max_from: I,
self_to_other: &mut StorableVec<I, A>,
other_to_self: &mut StorableVec<A, I>,
self_to_other: &mut StoredVec<I, A>,
other_to_self: &mut StoredVec<A, I>,
exit: &Exit,
) -> Result<()>
where
@@ -295,8 +295,8 @@ where
pub fn compute_sum_from_indexes<T2>(
&mut self,
max_from: I,
first_indexes: &mut StorableVec<I, T2>,
last_indexes: &mut StorableVec<I, T2>,
first_indexes: &mut StoredVec<I, T2>,
last_indexes: &mut StoredVec<I, T2>,
exit: &Exit,
) -> Result<()>
where

View File

@@ -4,7 +4,7 @@ use brk_core::{CheckedSub, StoredU32, StoredU64, StoredUsize, Timestamp, Weight}
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_parser::bitcoin;
use brk_vec::{AnyStorableVec, Compressed, Version};
use brk_vec::{AnyStoredVec, Compressed, Version};
use super::{
Indexes,
@@ -156,7 +156,7 @@ impl Vecs {
Ok(())
}
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
self.indexes_to_block_interval.any_vecs(),
self.indexes_to_block_count.any_vecs(),

View File

@@ -1,7 +1,7 @@
use std::path::Path;
use brk_exit::Exit;
use brk_vec::{AnyStorableVec, Compressed, Result, StorableVec, StoredIndex, StoredType, Version};
use brk_vec::{AnyStoredVec, Compressed, Result, StoredIndex, StoredType, StoredVec, Version};
use crate::storage::vecs::base::ComputedVec;
@@ -114,12 +114,7 @@ where
Ok(s)
}
pub fn extend(
&mut self,
max_from: I,
source: &mut StorableVec<I, T>,
exit: &Exit,
) -> Result<()> {
pub fn extend(&mut self, max_from: I, source: &mut StoredVec<I, T>, exit: &Exit) -> Result<()> {
if self.total.is_none() {
return Ok(());
};
@@ -154,9 +149,9 @@ where
pub fn compute<I2>(
&mut self,
max_from: I,
source: &mut StorableVec<I2, T>,
first_indexes: &mut StorableVec<I, I2>,
last_indexes: &mut StorableVec<I, I2>,
source: &mut StoredVec<I2, T>,
first_indexes: &mut StoredVec<I, I2>,
last_indexes: &mut StoredVec<I, I2>,
exit: &Exit,
) -> Result<()>
where
@@ -276,8 +271,8 @@ where
&mut self,
max_from: I,
source: &mut ComputedVecBuilder<I2, T>,
first_indexes: &mut StorableVec<I, I2>,
last_indexes: &mut StorableVec<I, I2>,
first_indexes: &mut StoredVec<I, I2>,
last_indexes: &mut StoredVec<I, I2>,
exit: &Exit,
) -> Result<()>
where
@@ -434,8 +429,8 @@ where
))
}
pub fn any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
let mut v: Vec<&dyn AnyStorableVec> = vec![];
pub fn any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
let mut v: Vec<&dyn AnyStoredVec> = vec![];
if let Some(first) = self.first.as_ref() {
v.push(first.any_vec());

View File

@@ -3,7 +3,7 @@ use std::path::Path;
use brk_core::{Dateindex, Decadeindex, Monthindex, Quarterindex, Weekindex, Yearindex};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Result, Version};
use brk_vec::{AnyStoredVec, Compressed, Result, Version};
use crate::storage::vecs::{Indexes, base::ComputedVec, indexes};
@@ -126,7 +126,7 @@ where
Ok(())
}
pub fn any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
vec![self.dateindex.any_vec()],
self.dateindex_extra.any_vecs(),

View File

@@ -5,7 +5,7 @@ use brk_core::{
};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Result, StorableVec, Version};
use brk_vec::{AnyStoredVec, Compressed, Result, StoredVec, Version};
use crate::storage::vecs::{Indexes, base::ComputedVec, indexes};
@@ -102,7 +102,7 @@ where
indexes: &mut indexes::Vecs,
starting_indexes: &Indexes,
exit: &Exit,
height: Option<&mut StorableVec<Height, T>>,
height: Option<&mut StoredVec<Height, T>>,
) -> color_eyre::Result<()> {
let height = height.unwrap_or_else(|| self.height.as_mut().unwrap().mut_vec());
@@ -168,7 +168,7 @@ where
Ok(())
}
pub fn any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
self.height.as_ref().map_or(vec![], |v| vec![v.any_vec()]),
self.height_extra.any_vecs(),

View File

@@ -3,7 +3,7 @@ use std::path::Path;
use brk_core::{Difficultyepoch, Height};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Result, Version};
use brk_vec::{AnyStoredVec, Compressed, Result, Version};
use crate::storage::vecs::{Indexes, base::ComputedVec, indexes};
@@ -84,7 +84,7 @@ where
Ok(())
}
pub fn any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
vec![self.height.any_vec()],
self.height_extra.any_vecs(),

View File

@@ -6,7 +6,7 @@ use brk_core::{
};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Result, StorableVec, Version};
use brk_vec::{AnyStoredVec, Compressed, Result, StoredVec, Version};
use crate::storage::vecs::{Indexes, base::ComputedVec, indexes};
@@ -115,7 +115,7 @@ where
indexes: &mut indexes::Vecs,
starting_indexes: &Indexes,
exit: &Exit,
txindex: Option<&mut StorableVec<Txindex, T>>,
txindex: Option<&mut StoredVec<Txindex, T>>,
) -> color_eyre::Result<()> {
let txindex = txindex.unwrap_or_else(|| self.txindex.as_mut().unwrap().mut_vec());
@@ -189,7 +189,7 @@ where
Ok(())
}
pub fn any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
self.txindex.as_ref().map_or(vec![], |v| vec![v.any_vec()]),
self.txindex_extra.any_vecs(),

View File

@@ -6,7 +6,7 @@ use brk_core::{
};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Version};
use brk_vec::{AnyStoredVec, Compressed, Version};
use super::ComputedVec;
@@ -784,7 +784,7 @@ impl Vecs {
})
}
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
vec![
self.dateindex_to_date.any_vec(),
self.dateindex_to_dateindex.any_vec(),

View File

@@ -7,7 +7,7 @@ use brk_core::{
use brk_exit::Exit;
use brk_fetcher::Fetcher;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Version};
use brk_vec::{AnyStoredVec, Compressed, Version};
use super::{
ComputedVec, Indexes,
@@ -765,7 +765,7 @@ impl Vecs {
Ok(())
}
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
vec![
vec![
self.dateindex_to_close_in_cents.any_vec(),

View File

@@ -3,7 +3,7 @@ use std::{fs, path::Path};
use brk_exit::Exit;
use brk_fetcher::Fetcher;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed};
use brk_vec::{AnyStoredVec, Compressed};
mod base;
mod blocks;
@@ -63,7 +63,7 @@ impl Vecs {
Ok(())
}
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
self.indexes.as_any_vecs(),
self.blocks.as_any_vecs(),

View File

@@ -3,7 +3,7 @@ use std::{fs, path::Path};
use brk_core::{Sats, StoredU64, Txindex, Txinindex, Txoutindex};
use brk_exit::Exit;
use brk_indexer::Indexer;
use brk_vec::{AnyStorableVec, Compressed, Version};
use brk_vec::{AnyStoredVec, Compressed, Version};
use super::{
ComputedVec, Indexes,
@@ -203,7 +203,7 @@ impl Vecs {
Ok(())
}
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStorableVec> {
pub fn as_any_vecs(&self) -> Vec<&dyn AnyStoredVec> {
[
vec![
self.txindex_to_is_coinbase.any_vec(),