pub struct SeqVecFromIterBuilder<T: Storable, E: Endianness, I> { /* private fields */ }Expand description
A builder for creating a SeqVec from an iterator of sequences.
This builder is designed for constructing a SeqVec from a data source
that produces sequences on the fly. It consumes the iterator in a single
pass, compressing sequences as they arrive.
§Limitations
This builder does not support:
Codec::Auto: Automatic codec selection requires analyzing all data, which is impossible in a single pass.- Parameter estimation for codecs like
Rice { log2_b: None }orZeta { k: None }.
The codec must be fully specified. If an unsupported codec is provided,
the build method will return an error.
§Examples
use compressed_intvec::seq::{SeqVec, LESeqVec, Codec};
// Generate sequences on the fly
let sequences_iter = (0..100).map(|i| vec![i as u32, i as u32 + 1]);
let vec: LESeqVec<u32> = SeqVec::from_iter_builder(sequences_iter)
.codec(Codec::Gamma) // Must be specified
.build()?;
assert_eq!(vec.num_sequences(), 100);Implementations§
Source§impl<T, E, I, S> SeqVecFromIterBuilder<T, E, I>
impl<T, E, I, S> SeqVecFromIterBuilder<T, E, I>
Sourcepub fn new(iter: I) -> Self
pub fn new(iter: I) -> Self
Creates a new builder from an iterator with default settings.
The default codec is Codec::Gamma, as automatic
selection is not possible in single-pass construction.
Sourcepub fn store_lengths(self, store: bool) -> Self
pub fn store_lengths(self, store: bool) -> Self
Enables or disables storing explicit sequence lengths.
When enabled, the builder stores a compact FixedVec of per-sequence
lengths. This allows O(1) length queries and enables faster decoding
paths that avoid end-bit checks.
The default is false to minimize memory usage.
Sourcepub fn build(self) -> Result<SeqVec<T, E, Vec<u64>>, SeqVecError>where
T: 'static,
BufBitWriter<E, MemWordWriterVec<u64, Vec<u64>>>: BitWrite<E, Error = Infallible> + CodesWrite<E>,
pub fn build(self) -> Result<SeqVec<T, E, Vec<u64>>, SeqVecError>where
T: 'static,
BufBitWriter<E, MemWordWriterVec<u64, Vec<u64>>>: BitWrite<E, Error = Infallible> + CodesWrite<E>,
Builds the SeqVec by consuming the iterator.
This method streams sequences directly from the iterator without materializing them all in memory. Single-pass construction avoids temporary allocations but requires the codec to be fully specified.
§Errors
Returns a SeqVecError if:
- An automatic or parameter-estimating codec spec is used.
- An I/O error occurs during encoding.
§Examples
use compressed_intvec::seq::{SeqVec, LESeqVec, Codec};
let sequences: Vec<Vec<u32>> = vec![vec![1, 2], vec![3, 4, 5]];
let vec: LESeqVec<u32> = SeqVec::from_iter_builder(sequences.into_iter())
.codec(Codec::Delta)
.build()?;Trait Implementations§
Auto Trait Implementations§
impl<T, E, I> Freeze for SeqVecFromIterBuilder<T, E, I>where
I: Freeze,
impl<T, E, I> RefUnwindSafe for SeqVecFromIterBuilder<T, E, I>
impl<T, E, I> Send for SeqVecFromIterBuilder<T, E, I>
impl<T, E, I> Sync for SeqVecFromIterBuilder<T, E, I>
impl<T, E, I> Unpin for SeqVecFromIterBuilder<T, E, I>
impl<T, E, I> UnsafeUnpin for SeqVecFromIterBuilder<T, E, I>where
I: UnsafeUnpin,
impl<T, E, I> UnwindSafe for SeqVecFromIterBuilder<T, E, I>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more