pub struct BitPackedArray { /* private fields */ }Implementations§
Source§impl BitPackedArray
impl BitPackedArray
Sourcepub fn try_new(
packed: ByteBuffer,
ptype: PType,
validity: Validity,
patches: Option<Patches>,
bit_width: u8,
length: usize,
offset: u16,
) -> VortexResult<Self>
pub fn try_new( packed: ByteBuffer, ptype: PType, validity: Validity, patches: Option<Patches>, bit_width: u8, length: usize, offset: u16, ) -> VortexResult<Self>
A safe constructor for a BitPackedArray from its components:
packedis ByteBuffer holding the compressed data that was packed with FastLanes bit-packing to abit_widthbits per value.lengthis the length of the original vector. Note that the packed is padded with zeros to the next multiple of 1024 elements iflengthis not divisible by 1024.ptypeof the original datavalidityto track any nullspatchesoptionally provided for values that did not pack
Any failure in validation will result in an error.
§Validation
- The
ptypemust be an integer validitymust havelengthlen- Any patches must have any
array_lenequal tolength - The
packedbuffer must be exactly sized to holdlengthvalues ofbit_widthrounded up to the next multiple of 1024.
Any violation of these preconditions will result in an error.
pub fn ptype(&self) -> PType
Sourcepub fn packed(&self) -> &ByteBuffer
pub fn packed(&self) -> &ByteBuffer
Underlying bit packed values as byte array
Sourcepub fn packed_slice<T: NativePType + BitPacking>(&self) -> &[T]
pub fn packed_slice<T: NativePType + BitPacking>(&self) -> &[T]
Access the slice of packed values as an array of T
Sourcepub fn unpacked_chunks<T: BitPacked>(&self) -> BitUnpackedChunks<T>
pub fn unpacked_chunks<T: BitPacked>(&self) -> BitUnpackedChunks<T>
Accessor for bit unpacked chunks
Sourcepub fn patches(&self) -> Option<&Patches>
pub fn patches(&self) -> Option<&Patches>
Access the patches array.
If present, patches MUST be a SparseArray with equal-length to this array, and whose
indices indicate the locations of patches. The indices must have non-zero length.
pub fn replace_patches(&mut self, patches: Option<Patches>)
pub fn offset(&self) -> u16
Sourcepub fn encode(array: &dyn Array, bit_width: u8) -> VortexResult<Self>
pub fn encode(array: &dyn Array, bit_width: u8) -> VortexResult<Self>
Bit-pack an array of primitive integers down to the target bit-width using the FastLanes SIMD-accelerated packing kernels.
§Errors
If the provided array is not an integer type, an error will be returned.
If the provided array contains negative values, an error will be returned.
If the requested bit-width for packing is larger than the array’s native width, an error will be returned.
Sourcepub fn max_packed_value(&self) -> usize
pub fn max_packed_value(&self) -> usize
Calculate the maximum value that can be contained by this array, given its bit-width.
Note that this value need not actually be present in the array.
Trait Implementations§
Source§impl AsRef<dyn Array> for BitPackedArray
impl AsRef<dyn Array> for BitPackedArray
Source§impl Clone for BitPackedArray
impl Clone for BitPackedArray
Source§fn clone(&self) -> BitPackedArray
fn clone(&self) -> BitPackedArray
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BitPackedArray
impl Debug for BitPackedArray
Source§impl Deref for BitPackedArray
impl Deref for BitPackedArray
Source§impl From<BitPackedArray> for ArrayRef
impl From<BitPackedArray> for ArrayRef
Source§fn from(value: BitPackedArray) -> ArrayRef
fn from(value: BitPackedArray) -> ArrayRef
Source§impl IntoArray for BitPackedArray
impl IntoArray for BitPackedArray
fn into_array(self) -> ArrayRef
Source§impl ValidityHelper for BitPackedArray
impl ValidityHelper for BitPackedArray
Auto Trait Implementations§
impl !Freeze for BitPackedArray
impl !RefUnwindSafe for BitPackedArray
impl Send for BitPackedArray
impl Sync for BitPackedArray
impl Unpin for BitPackedArray
impl !UnwindSafe for BitPackedArray
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> 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.