pub enum VariableCodecSpec {
}
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
isSome(val)
, the specified parameter is used. - If
log2_b
isNone
, an optimal parameter is estimated by analyzing the entire dataset.
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
isSome(val)
, the specified parameter is used (k > 0
). - If
k
isNone
, an optimal parameter is estimated by analyzing the entire dataset.
Golomb
Golomb-coding with a parameter b
. This is a generalization of Rice coding
and is also suitable for geometric distributions.
- If
b
isSome(val)
, the specified parameter is used (b > 0
). - If
b
isNone
, an optimal parameter is estimated by analyzing the entire dataset.
Omega
Elias-Fano ω-coding. A universal code.
Pi
Streamlined Apostolico–Drovandi π code with a parameter k
.
- If
k
isSome(val)
, the specified parameter is used (k > 0
). - If
k
isNone
, an optimal parameter is estimated by analyzing the entire dataset.
ExpGolomb
Elias-Fano Exponential-Golomb coding with a parameter k
.
- If
k
isSome(val)
, the specified parameter is used. - If
k
isNone
, an optimal parameter is estimated by analyzing the entire dataset.
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
impl Clone for VariableCodecSpec
Source§fn clone(&self) -> VariableCodecSpec
fn clone(&self) -> VariableCodecSpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for VariableCodecSpec
impl Debug for VariableCodecSpec
Source§impl Default for VariableCodecSpec
impl Default for VariableCodecSpec
Source§fn default() -> VariableCodecSpec
fn default() -> VariableCodecSpec
Source§impl PartialEq for VariableCodecSpec
impl PartialEq for VariableCodecSpec
impl Copy for VariableCodecSpec
impl Eq for VariableCodecSpec
impl StructuralPartialEq for VariableCodecSpec
Auto Trait Implementations§
impl Freeze for VariableCodecSpec
impl RefUnwindSafe for VariableCodecSpec
impl Send for VariableCodecSpec
impl Sync for VariableCodecSpec
impl Unpin for VariableCodecSpec
impl UnwindSafe for VariableCodecSpec
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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