Trait Compressor

Source
pub trait Compressor {
    type ArrayType: Array;
    type SchemeType: Scheme<StatsType = Self::StatsType> + ?Sized;
    type StatsType: CompressorStats<ArrayType = Self::ArrayType>;

    // Required methods
    fn schemes() -> &'static [&'static Self::SchemeType];
    fn default_scheme() -> &'static Self::SchemeType;
    fn dict_scheme_code() -> <Self::SchemeType as Scheme>::CodeType;

    // Provided methods
    fn compress(
        array: &Self::ArrayType,
        is_sample: bool,
        allowed_cascading: usize,
        excludes: &[<Self::SchemeType as Scheme>::CodeType],
    ) -> VortexResult<ArrayRef>
       where Self::SchemeType: 'static { ... }
    fn choose_scheme(
        stats: &Self::StatsType,
        is_sample: bool,
        allowed_cascading: usize,
        excludes: &[<Self::SchemeType as Scheme>::CodeType],
    ) -> VortexResult<&'static Self::SchemeType> { ... }
}
Expand description

A compressor for a particular input type.

The Input type should be one of the canonical array variants, e.g. PrimitiveArray.

Compressors expose a compress function.

Required Associated Types§

Source

type ArrayType: Array

Source

type SchemeType: Scheme<StatsType = Self::StatsType> + ?Sized

Source

type StatsType: CompressorStats<ArrayType = Self::ArrayType>

Required Methods§

Source

fn schemes() -> &'static [&'static Self::SchemeType]

Source

fn default_scheme() -> &'static Self::SchemeType

Source

fn dict_scheme_code() -> <Self::SchemeType as Scheme>::CodeType

Provided Methods§

Source

fn compress( array: &Self::ArrayType, is_sample: bool, allowed_cascading: usize, excludes: &[<Self::SchemeType as Scheme>::CodeType], ) -> VortexResult<ArrayRef>
where Self::SchemeType: 'static,

Source

fn choose_scheme( stats: &Self::StatsType, is_sample: bool, allowed_cascading: usize, excludes: &[<Self::SchemeType as Scheme>::CodeType], ) -> VortexResult<&'static Self::SchemeType>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Compressor for IntCompressor

Source§

impl Compressor for FloatCompressor

Source§

type ArrayType = PrimitiveArray

Source§

type SchemeType = dyn FloatScheme<CodeType = FloatCode, StatsType = FloatStats>

Source§

type StatsType = FloatStats

Source§

impl Compressor for StringCompressor

Source§

type ArrayType = VarBinViewArray

Source§

type SchemeType = dyn StringScheme<CodeType = StringCode, StatsType = StringStats>

Source§

type StatsType = StringStats