global: traversable

This commit is contained in:
nym21
2025-10-05 23:40:04 +02:00
parent b622285999
commit 1c6ece48a8
72 changed files with 1009 additions and 1383 deletions

View File

@@ -1,17 +1,17 @@
use allocative::Allocative;
use brk_error::{Error, Result};
use brk_structs::{CheckedSub, StoredU64, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyCollectableVec, AnyIterableVec, AnyStoredVec, AnyVec, Database, EagerVec, Exit, Format,
GenericStoredVec, StoredIndex, StoredRaw,
AnyIterableVec, AnyStoredVec, AnyVec, Database, EagerVec, Exit, Format, GenericStoredVec,
StoredIndex, StoredRaw,
};
use crate::utils::get_percentile;
use super::ComputedType;
#[derive(Clone, Debug, IVecs, Allocative)]
#[derive(Clone, Debug, Traversable, Allocative)]
pub struct EagerVecsBuilder<I, T>
where
I: StoredIndex,
@@ -541,7 +541,9 @@ where
}
pub fn starting_index(&self, max_from: I) -> I {
max_from.min(I::from(self.iter().map(|v| v.len()).min().unwrap()))
max_from.min(I::from(
self.iter_any_collectable().map(|v| v.len()).min().unwrap(),
))
}
pub fn unwrap_first(&self) -> &EagerVec<I, T> {

View File

@@ -1,9 +1,8 @@
use allocative::Allocative;
use brk_structs::Version;
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyBoxedIterableVec, AnyCloneableIterableVec, AnyCollectableVec, FromCoarserIndex,
LazyVecFrom2, StoredIndex,
AnyBoxedIterableVec, AnyCloneableIterableVec, FromCoarserIndex, LazyVecFrom2, StoredIndex,
};
use crate::grouped::{EagerVecsBuilder, VecBuilderOptions};
@@ -11,7 +10,7 @@ use crate::grouped::{EagerVecsBuilder, VecBuilderOptions};
use super::ComputedType;
#[allow(clippy::type_complexity)]
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct LazyVecsBuilder<I, T, S1I, S2T>
where
I: StoredIndex,
@@ -218,7 +217,9 @@ where
}
pub fn starting_index(&self, max_from: I) -> I {
max_from.min(I::from(self.iter().map(|v| v.len()).min().unwrap()))
max_from.min(I::from(
self.iter_any_collectable().map(|v| v.len()).min().unwrap(),
))
}
pub fn unwrap_first(&self) -> &LazyVecFrom2<I, T, S1I, T, I, S2T> {

View File

@@ -4,14 +4,14 @@ use brk_error::Result;
use brk_structs::{
DateIndex, DecadeIndex, MonthIndex, QuarterIndex, SemesterIndex, Version, WeekIndex, YearIndex,
};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{AnyCloneableIterableVec, AnyIterableVec, Database, EagerVec, Exit};
use crate::{Indexes, grouped::LazyVecsBuilder, indexes};
use super::{ComputedType, EagerVecsBuilder, Source, VecBuilderOptions};
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct ComputedVecsFromDateIndex<T>
where
T: ComputedType + PartialOrd,

View File

@@ -5,7 +5,7 @@ use brk_structs::{
DateIndex, DecadeIndex, DifficultyEpoch, Height, MonthIndex, QuarterIndex, SemesterIndex,
Version, WeekIndex, YearIndex,
};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{AnyCloneableIterableVec, AnyIterableVec, Database, EagerVec, Exit};
use crate::{
@@ -16,7 +16,7 @@ use crate::{
use super::{ComputedType, EagerVecsBuilder, VecBuilderOptions};
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct ComputedVecsFromHeight<T>
where
T: ComputedType + PartialOrd,

View File

@@ -1,14 +1,14 @@
use brk_error::Result;
use brk_structs::{DifficultyEpoch, Height, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{Database, EagerVec, Exit};
use crate::{Indexes, indexes};
use super::{ComputedType, EagerVecsBuilder, VecBuilderOptions};
#[derive(Clone, IVecs)]
#[derive(Clone, Traversable)]
pub struct ComputedVecsFromHeightStrict<T>
where
T: ComputedType + PartialOrd,

View File

@@ -5,7 +5,7 @@ use brk_structs::{
Bitcoin, DateIndex, DecadeIndex, DifficultyEpoch, Dollars, Height, MonthIndex, QuarterIndex,
Sats, SemesterIndex, TxIndex, Version, WeekIndex, YearIndex,
};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyCloneableIterableVec, AnyVec, CollectableVec, Database, EagerVec, Exit, GenericStoredVec,
StoredIndex, VecIterator,
@@ -19,7 +19,7 @@ use crate::{
use super::{ComputedType, EagerVecsBuilder, VecBuilderOptions};
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct ComputedVecsFromTxindex<T>
where
T: ComputedType + PartialOrd,

View File

@@ -1,6 +1,6 @@
use brk_error::Result;
use brk_structs::{Date, DateIndex, Dollars, StoredF32, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyIterableVec, AnyStoredVec, AnyVec, CollectableVec, Database, EagerVec, Exit,
GenericStoredVec, StoredIndex, VecIterator,
@@ -17,7 +17,7 @@ use crate::{
use super::{ComputedVecsFromDateIndex, VecBuilderOptions};
#[derive(Clone, IVecs)]
#[derive(Clone, Traversable)]
pub struct ComputedRatioVecsFromDateIndex {
pub price: Option<ComputedVecsFromDateIndex<Dollars>>,

View File

@@ -1,6 +1,6 @@
use brk_error::Result;
use brk_structs::{CheckedSub, Date, DateIndex, Dollars, StoredF32, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyIterableVec, AnyStoredVec, AnyVec, BoxedVecIterator, CollectableVec, Database, EagerVec,
Exit, GenericStoredVec, StoredIndex,
@@ -10,7 +10,7 @@ use crate::{Indexes, grouped::source::Source, indexes};
use super::{ComputedVecsFromDateIndex, VecBuilderOptions};
#[derive(Clone, IVecs)]
#[derive(Clone, Traversable)]
pub struct ComputedStandardDeviationVecsFromDateIndex {
days: usize,

View File

@@ -1,6 +1,6 @@
use brk_error::Result;
use brk_structs::{Bitcoin, DateIndex, Dollars, Sats, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{CollectableVec, Database, EagerVec, Exit, StoredVec};
use crate::{
@@ -12,7 +12,7 @@ use crate::{
use super::{Source, VecBuilderOptions};
#[derive(Clone, IVecs)]
#[derive(Clone, Traversable)]
pub struct ComputedValueVecsFromDateIndex {
pub sats: ComputedVecsFromDateIndex<Sats>,
pub bitcoin: ComputedVecsFromDateIndex<Bitcoin>,

View File

@@ -1,7 +1,7 @@
use allocative::Allocative;
use brk_error::Result;
use brk_structs::{Bitcoin, Dollars, Height, Sats, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{CollectableVec, Database, EagerVec, Exit, StoredVec};
use crate::{
@@ -13,7 +13,7 @@ use crate::{
use super::{ComputedVecsFromHeight, VecBuilderOptions};
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct ComputedValueVecsFromHeight {
pub sats: ComputedVecsFromHeight<Sats>,
pub bitcoin: ComputedVecsFromHeight<Bitcoin>,

View File

@@ -2,7 +2,7 @@ use allocative::Allocative;
use brk_error::Result;
use brk_indexer::Indexer;
use brk_structs::{Bitcoin, Close, Dollars, Height, Sats, TxIndex, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{
AnyCloneableIterableVec, CollectableVec, Database, Exit, LazyVecFrom1, LazyVecFrom3,
StoredIndex, StoredVec,
@@ -12,7 +12,7 @@ use crate::{Indexes, grouped::Source, indexes, price};
use super::{ComputedVecsFromTxindex, VecBuilderOptions};
#[derive(Clone, IVecs, Allocative)]
#[derive(Clone, Traversable, Allocative)]
pub struct ComputedValueVecsFromTxindex {
pub sats: ComputedVecsFromTxindex<Sats>,
pub bitcoin_txindex: LazyVecFrom1<TxIndex, Bitcoin, TxIndex, Sats>,

View File

@@ -1,6 +1,6 @@
use brk_error::Result;
use brk_structs::{Bitcoin, Dollars, Height, Sats, Version};
use brk_vecs::IVecs;
use brk_traversable::Traversable;
use vecdb::{CollectableVec, Database, EagerVec, Exit, Format, StoredVec};
use crate::{
@@ -10,7 +10,7 @@ use crate::{
traits::{ComputeFromBitcoin, ComputeFromSats},
};
#[derive(Clone, IVecs)]
#[derive(Clone, Traversable)]
pub struct ComputedHeightValueVecs {
pub sats: Option<EagerVec<Height, Sats>>,
pub bitcoin: EagerVec<Height, Bitcoin>,