Enum VariableCodecSpec

Source
pub enum VariableCodecSpec {
Show 13 variants Gamma, Delta, Unary, Rice { log2_b: Option<u8>, }, Zeta { k: Option<u64>, }, Golomb { b: Option<u64>, }, Omega, Pi { k: Option<u64>, }, ExpGolomb { k: Option<u64>, }, VByteLe, VByteBe, Auto, Explicit(Codes),
}
Expand description

Specifies the compression codec and its parameters for an IntVec.

This enum allows for either explicitly setting the parameters for codes like Rice and Zeta, or requesting that the IntVecBuilder automatically select suitable parameters by performing a full analysis of the data distribution.

Variants§

§

Gamma

Elias γ-coding. A simple, universal code that is effective for integers with a distribution skewed towards small values. It is the default codec for the iterator-based builder, which cannot perform data analysis.

§

Delta

Elias δ-coding. A universal code that is generally more efficient than Gamma for larger integer values.

§

Unary

Unary coding. Encodes an integer n as n zeros followed by a one. It is only efficient for extremely small values (e.g., 0, 1, 2).

§

Rice

Rice-coding with a parameter log2_b. This code is optimal for data with a geometric distribution.

  • If log2_b is Some(val), the specified parameter is used.
  • If log2_b is None, an optimal parameter is estimated by analyzing the entire dataset.

Fields

§log2_b: Option<u8>
§

Zeta

Boldi-Vigna ζ-coding with a parameter k. This code is effective for data with a power-law distribution, common in web graphs and social networks.

  • If k is Some(val), the specified parameter is used (k > 0).
  • If k is None, an optimal parameter is estimated by analyzing the entire dataset.

Fields

§

Golomb

Golomb-coding with a parameter b. This is a generalization of Rice coding and is also suitable for geometric distributions.

  • If b is Some(val), the specified parameter is used (b > 0).
  • If b is None, an optimal parameter is estimated by analyzing the entire dataset.

Fields

§

Omega

Elias-Fano ω-coding. A universal code.

§

Pi

Streamlined Apostolico–Drovandi π code with a parameter k.

  • If k is Some(val), the specified parameter is used (k > 0).
  • If k is None, an optimal parameter is estimated by analyzing the entire dataset.

Fields

§

ExpGolomb

Elias-Fano Exponential-Golomb coding with a parameter k.

  • If k is Some(val), the specified parameter is used.
  • If k is None, an optimal parameter is estimated by analyzing the entire dataset.

Fields

§

VByteLe

VByte encoding with Little-Endian byte order. This is often one of the fastest codecs for decoding, though it may not offer the best compression.

§

VByteBe

VByte encoding with Big-Endian byte order.

§

Auto

Automatically select the best variable-length code based on the data.

When this option is used, the builder performs a statistical analysis on the entire input dataset to determine which codec and parameterization provides the best compression ratio.

§Note

This option is not supported for the iterator-based builder, as it requires pre-analyzing the data.

§

Explicit(Codes)

Use an explicitly provided Codes variant from dsi-bitstream.

This is for advanced use cases where the user has already constructed a Codes enum instance.

Trait Implementations§

Source§

impl Clone for VariableCodecSpec

Source§

fn clone(&self) -> VariableCodecSpec

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for VariableCodecSpec

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for VariableCodecSpec

Source§

fn default() -> VariableCodecSpec

Returns the “default value” for a type. Read more
Source§

impl PartialEq for VariableCodecSpec

Source§

fn eq(&self, other: &VariableCodecSpec) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for VariableCodecSpec

Source§

impl Eq for VariableCodecSpec

Source§

impl StructuralPartialEq for VariableCodecSpec

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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