pub struct FSST;Implementations§
Source§impl FSST
impl FSST
Sourcepub fn try_new(
dtype: DType,
symbols: Buffer<Symbol>,
symbol_lengths: Buffer<u8>,
codes: VarBinArray,
uncompressed_lengths: ArrayRef,
) -> VortexResult<FSSTArray>
pub fn try_new( dtype: DType, symbols: Buffer<Symbol>, symbol_lengths: Buffer<u8>, codes: VarBinArray, uncompressed_lengths: ArrayRef, ) -> VortexResult<FSSTArray>
Build an FSST array from a set of symbols and codes.
The codes VarBinArray is decomposed: its bytes are stored in FSSTData, while
its offsets and validity become array slots. The codes VarBinArray can be
reconstructed on demand via FSSTArrayExt::codes().
Trait Implementations§
Source§impl CastReduce for FSST
impl CastReduce for FSST
Source§impl CompareKernel for FSST
impl CompareKernel for FSST
fn compare( lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, ) -> VortexResult<Option<ArrayRef>>
Source§impl FilterKernel for FSST
impl FilterKernel for FSST
Source§fn filter(
array: ArrayView<'_, Self>,
mask: &Mask,
ctx: &mut ExecutionCtx,
) -> VortexResult<Option<ArrayRef>>
fn filter( array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult<Option<ArrayRef>>
Source§impl LikeKernel for FSST
impl LikeKernel for FSST
fn like( array: ArrayView<'_, Self>, pattern: &ArrayRef, options: LikeOptions, _ctx: &mut ExecutionCtx, ) -> VortexResult<Option<ArrayRef>>
Source§impl OperationsVTable<FSST> for FSST
impl OperationsVTable<FSST> for FSST
Source§fn scalar_at(
array: ArrayView<'_, FSST>,
index: usize,
ctx: &mut ExecutionCtx,
) -> VortexResult<Scalar>
fn scalar_at( array: ArrayView<'_, FSST>, index: usize, ctx: &mut ExecutionCtx, ) -> VortexResult<Scalar>
Source§impl SliceReduce for FSST
impl SliceReduce for FSST
Source§impl TakeExecute for FSST
impl TakeExecute for FSST
Source§fn take(
array: ArrayView<'_, Self>,
indices: &ArrayRef,
_ctx: &mut ExecutionCtx,
) -> VortexResult<Option<ArrayRef>>
fn take( array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult<Option<ArrayRef>>
Source§impl VTable for FSST
impl VTable for FSST
Source§fn deserialize(
&self,
dtype: &DType,
len: usize,
metadata: &[u8],
buffers: &[BufferHandle],
children: &dyn ArrayChildren,
_session: &VortexSession,
) -> VortexResult<ArrayParts<Self>>
fn deserialize( &self, dtype: &DType, len: usize, metadata: &[u8], buffers: &[BufferHandle], children: &dyn ArrayChildren, _session: &VortexSession, ) -> VortexResult<ArrayParts<Self>>
Deserializes an FSST array from its serialized components.
Supports two serialization formats:
§Legacy format (2 buffers, 2 children)
The original FSST layout stored the compressed codes as a full VarBinArray child.
- Buffers:
[symbols, symbol_lengths] - Children:
[codes (VarBinArray), uncompressed_lengths (Primitive)]
The codes VarBinArray child is decomposed: its bytes become the codes_bytes buffer,
and its offsets/validity are extracted into slots.
See FSST::deserialize_legacy.
§Current format (3 buffers, 2-3 children)
The current layout stores the compressed bytes as a raw buffer alongside the symbol table, with offsets and validity as separate children.
- Buffers:
[symbols, symbol_lengths, compressed_codes_bytes] - Children:
[uncompressed_lengths, codes_offsets, (optional) codes_validity]
The codes_bytes buffer is stored directly in FSSTData. A VarBinArray for the
codes can be reconstructed on demand via FSSTArrayExt::codes() using the bytes
from FSSTData combined with offsets and validity from the array’s slots.
type ArrayData = FSSTData
type OperationsVTable = FSST
type ValidityVTable = FSST
Source§fn validate(
&self,
data: &Self::ArrayData,
dtype: &DType,
len: usize,
slots: &[Option<ArrayRef>],
) -> VortexResult<()>
fn validate( &self, data: &Self::ArrayData, dtype: &DType, len: usize, slots: &[Option<ArrayRef>], ) -> VortexResult<()>
Source§fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle
fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle
Source§fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option<String>
fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option<String>
None if unnamed.Source§fn serialize(
array: ArrayView<'_, Self>,
_session: &VortexSession,
) -> VortexResult<Option<Vec<u8>>>
fn serialize( array: ArrayView<'_, Self>, _session: &VortexSession, ) -> VortexResult<Option<Vec<u8>>>
None if the array cannot be serialized.Source§fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String
fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String
Source§fn execute(
array: Array<Self>,
ctx: &mut ExecutionCtx,
) -> VortexResult<ExecutionResult>
fn execute( array: Array<Self>, ctx: &mut ExecutionCtx, ) -> VortexResult<ExecutionResult>
ExecutionResult. Read moreSource§fn append_to_builder(
array: ArrayView<'_, Self>,
builder: &mut dyn ArrayBuilder,
ctx: &mut ExecutionCtx,
) -> VortexResult<()>
fn append_to_builder( array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()>
Source§fn execute_parent(
array: ArrayView<'_, Self>,
parent: &ArrayRef,
child_idx: usize,
ctx: &mut ExecutionCtx,
) -> VortexResult<Option<ArrayRef>>
fn execute_parent( array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, ) -> VortexResult<Option<ArrayRef>>
Source§fn reduce_parent(
array: ArrayView<'_, Self>,
parent: &ArrayRef,
child_idx: usize,
) -> VortexResult<Option<ArrayRef>>
fn reduce_parent( array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult<Option<ArrayRef>>
Source§fn nchildren(array: ArrayView<'_, Self>) -> usize
fn nchildren(array: ArrayView<'_, Self>) -> usize
Source§fn child(array: ArrayView<'_, Self>, idx: usize) -> ArrayRef
fn child(array: ArrayView<'_, Self>, idx: usize) -> ArrayRef
Auto Trait Implementations§
impl Freeze for FSST
impl RefUnwindSafe for FSST
impl Send for FSST
impl Sync for FSST
impl Unpin for FSST
impl UnsafeUnpin for FSST
impl UnwindSafe for FSST
Blanket Implementations§
Source§impl<V> ArrayPlugin for Vwhere
V: VTable,
impl<V> ArrayPlugin for Vwhere
V: VTable,
Source§fn serialize(
&self,
array: &ArrayRef,
session: &VortexSession,
) -> Result<Option<Vec<u8>>, VortexError>
fn serialize( &self, array: &ArrayRef, session: &VortexSession, ) -> Result<Option<Vec<u8>>, VortexError>
Source§fn deserialize(
&self,
dtype: &DType,
len: usize,
metadata: &[u8],
buffers: &[BufferHandle],
children: &dyn ArrayChildren,
session: &VortexSession,
) -> Result<ArrayRef, VortexError>
fn deserialize( &self, dtype: &DType, len: usize, metadata: &[u8], buffers: &[BufferHandle], children: &dyn ArrayChildren, session: &VortexSession, ) -> Result<ArrayRef, VortexError>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> SessionVar for T
impl<T> SessionVar for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.