Struct IntVecBuilder

Source
pub struct IntVecBuilder<T: Storable, E: Endianness> { /* private fields */ }
Expand description

A builder for creating an IntVec from a slice of integers.

This builder is the primary entry point for constructing a compressed vector when the data is already available in memory. It allows for detailed configuration of the sampling rate (k) and the compression codec.

This builder always produces an owned IntVec<T, E, Vec<u64>>. It is obtained by calling IntVec::builder.

Implementations§

Source§

impl<T: Storable, E: Endianness> IntVecBuilder<T, E>

Source

pub fn k(self, k: usize) -> Self

Sets the sampling rate k for random access.

The sampling rate determines how many elements are stored between each sample point. A smaller k results in faster random access but uses more memory for the sampling table. See the module-level documentation for a detailed explanation.

§Panics

The build method will return an error if k is 0.

Source

pub fn codec(self, codec_spec: VariableCodecSpec) -> Self

Sets the compression codec to use.

The choice of codec can significantly impact the compression ratio. By default, this is VariableCodecSpec::Auto, which analyzes the data to select the best codec.

Source

pub fn build(self, input: &[T]) -> Result<IntVec<T, E, Vec<u64>>, IntVecError>

Builds the IntVec from a slice of data, consuming the builder.

This method performs the compression and builds the sampling table.

§Errors

Returns an IntVecError if the parameters are invalid (e.g., k=0) or if an error occurs during compression.

§Examples
use compressed_intvec::variable::{IntVec, SIntVec, VariableCodecSpec};

let data: &[i16] = &[-100, 0, 50, -2, 1000];

let vec: SIntVec<i16> = IntVec::builder()
    .k(2) // Smaller `k` for faster access
    .codec(VariableCodecSpec::Delta) // Explicitly choose Delta coding
    .build(data)
    .unwrap();

assert_eq!(vec.len(), 5);
assert_eq!(vec.get(0), Some(-100));

Trait Implementations§

Source§

impl<T: Debug + Storable, E: Debug + Endianness> Debug for IntVecBuilder<T, E>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, E> Freeze for IntVecBuilder<T, E>

§

impl<T, E> RefUnwindSafe for IntVecBuilder<T, E>

§

impl<T, E> Send for IntVecBuilder<T, E>
where T: Send,

§

impl<T, E> Sync for IntVecBuilder<T, E>
where T: Sync,

§

impl<T, E> Unpin for IntVecBuilder<T, E>
where T: Unpin, E: Unpin,

§

impl<T, E> UnwindSafe for IntVecBuilder<T, E>
where T: UnwindSafe, E: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CastableFrom<T> for T

Source§

fn cast_from(value: T) -> T

Call Self as W
Source§

impl<T, U> CastableInto<U> for T
where U: CastableFrom<T>,

Source§

fn cast(self) -> U

Call W::cast_from(self)
Source§

impl<T> DowncastableFrom<T> for T

Source§

fn downcast_from(value: T) -> T

Truncate the current UnsignedInt to a possibly smaller size
Source§

impl<T, U> DowncastableInto<U> for T
where U: DowncastableFrom<T>,

Source§

fn downcast(self) -> U

Call W::downcast_from(self)
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Splat<T> for T

Source§

fn splat(value: T) -> T

Source§

impl<T> To<T> for T

Source§

fn to(self) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UpcastableFrom<T> for T

Source§

fn upcast_from(value: T) -> T

Extend the current UnsignedInt to a possibly bigger size.
Source§

impl<T, U> UpcastableInto<U> for T
where U: UpcastableFrom<T>,

Source§

fn upcast(self) -> U

Call W::upcast_from(self)
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V