#[repr(C, align(64))]pub enum TextArray {
String32(Arc<StringArray<u32>>),
String64(Arc<StringArray<u64>>),
Categorical8(Arc<CategoricalArray<u8>>),
Categorical16(Arc<CategoricalArray<u16>>),
Categorical32(Arc<CategoricalArray<u32>>),
Categorical64(Arc<CategoricalArray<u64>>),
Null,
}Expand description
§TextArray
Unified Text array container
§Purpose
Exists to unify string and categorical operations, simplify API’s and streamline user ergonomics.
§Usage:
- It is accessible from
Arrayusing.str(), and provides typed variant access via for e.g.,.str64(), so one can drill down to the required granularity viamyarr.str().str64() - This streamlines function implementations,
and, despite the additional
enumlayer, matching lanes in many real-world scenarios. This is because one can for e.g., unify a function signature withimpl Into<TextArray>, and all of the subtypes, plusArrayandTextArray, all qualify. - Additionally, you can then use one
Textimplementation on the enum dispatch arm for allTextvariants, or, in many cases, for the entire text arm when they are the same. This is mostly useful for theNumericArrayenum where unifying floats and integers is a very common pattern, however there may be are cases where it’s useful forCategoricalandStringdata too. For e.g., you can do a match onTextArraythen just handle those two cases explicitly, or for e.g., acceptimpl Into<TextArray>, then simply case it toStringfor some string ops when feeling barbarian vibes.
§Typecasting behaviour
- If the enum already holds the given type (which should be known at compile-time),
then using accessors like
.str32()is zero-cost, as it transfers ownership. - If you want to keep the original, of course use
.clone()beforehand. - If you use an accessor to a different base type, e.g.,
.cat32()when it’s a.str32()already in the enum, it will convert it. Therefore, be mindful of performance when this occurs.
Variants§
String32(Arc<StringArray<u32>>)
String64(Arc<StringArray<u64>>)
Categorical8(Arc<CategoricalArray<u8>>)
Categorical16(Arc<CategoricalArray<u16>>)
Categorical32(Arc<CategoricalArray<u32>>)
Categorical64(Arc<CategoricalArray<u64>>)
Null
Implementations§
Source§impl TextArray
impl TextArray
Sourcepub fn delete_range(&mut self, start: usize, end: usize)
pub fn delete_range(&mut self, start: usize, end: usize)
Removes the rows in [start, end), shifting later rows left.
A shared inner array is cloned first i.e. copy-on-write.
§Panics
Panics if start > end or end > len.
Sourcepub fn has_nulls(&self) -> bool
pub fn has_nulls(&self) -> bool
Returns true when the variant holds at least one null.
Delegates to each inner array’s MaskedArray::has_nulls; Null is
treated as empty (no elements means no nulls).
Sourcepub fn append_array(&mut self, other: &Self)
pub fn append_array(&mut self, other: &Self)
Appends all values (and null mask if present) from other into self.
Panics if the two arrays are of different variants or incompatible types.
This function uses copy-on-write semantics for arrays wrapped in Arc.
If self is the only owner of its data, appends are performed in place without copying.
If the array data is shared (Arc reference count > 1), the data is first cloned
(so the mutation does not affect other owners), and the append is then performed on the unique copy.
This ensures that calling append_array never mutates data referenced elsewhere,
but also avoids unnecessary cloning when the data is uniquely owned.
pub fn append_range( &mut self, other: &Self, offset: usize, len: usize, ) -> Result<(), MinarrowError>
Sourcepub fn insert_rows(
&mut self,
index: usize,
other: &Self,
) -> Result<(), MinarrowError>
pub fn insert_rows( &mut self, index: usize, other: &Self, ) -> Result<(), MinarrowError>
Inserts all values (and null mask if present) from other into self at the specified index.
This is an O(n) operation.
Returns an error if the two arrays are of different variants or incompatible types, or if the index is out of bounds.
This function uses copy-on-write semantics for arrays wrapped in Arc.
Sourcepub fn split(self, index: usize) -> Result<(Self, Self), MinarrowError>
pub fn split(self, index: usize) -> Result<(Self, Self), MinarrowError>
Splits the TextArray at the specified index, consuming self and returning two arrays.
Sourcepub fn str32(&self) -> Arc<StringArray<u32>> ⓘ
pub fn str32(&self) -> Arc<StringArray<u32>> ⓘ
Returns the inner array as Arc<StringArray<u32>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_str32(&self) -> Result<Arc<StringArray<u32>>, MinarrowError>
pub fn try_str32(&self) -> Result<Arc<StringArray<u32>>, MinarrowError>
Casts to StringArray
- Converts via TryFrom,
- The matching variant returns as a shared handle without copying data.
Sourcepub fn str64(&self) -> Arc<StringArray<u64>> ⓘ
pub fn str64(&self) -> Arc<StringArray<u64>> ⓘ
Returns the inner array as Arc<StringArray<u64>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_str64(&self) -> Result<Arc<StringArray<u64>>, MinarrowError>
pub fn try_str64(&self) -> Result<Arc<StringArray<u64>>, MinarrowError>
Casts to StringArray
- Converts via
FromorTryFrom, depending on the inner type - The matching variant returns as a shared handle without copying data.
Sourcepub fn cat32(&self) -> Arc<CategoricalArray<u32>> ⓘ
pub fn cat32(&self) -> Arc<CategoricalArray<u32>> ⓘ
Returns the inner array as Arc<CategoricalArray<u32>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_cat32(&self) -> Result<Arc<CategoricalArray<u32>>, MinarrowError>
pub fn try_cat32(&self) -> Result<Arc<CategoricalArray<u32>>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - The matching variant returns as a shared handle without copying data.
Sourcepub fn cat64(&self) -> Arc<CategoricalArray<u64>> ⓘ
pub fn cat64(&self) -> Arc<CategoricalArray<u64>> ⓘ
Returns the inner array as Arc<CategoricalArray<u64>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_cat64(&self) -> Result<Arc<CategoricalArray<u64>>, MinarrowError>
pub fn try_cat64(&self) -> Result<Arc<CategoricalArray<u64>>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - The matching variant returns as a shared handle without copying data.
Sourcepub fn cat8(&self) -> Arc<CategoricalArray<u8>> ⓘ
pub fn cat8(&self) -> Arc<CategoricalArray<u8>> ⓘ
Returns the inner array as Arc<CategoricalArray<u8>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_cat8(&self) -> Result<Arc<CategoricalArray<u8>>, MinarrowError>
pub fn try_cat8(&self) -> Result<Arc<CategoricalArray<u8>>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - The matching variant returns as a shared handle without copying data.
Sourcepub fn cat16(&self) -> Arc<CategoricalArray<u16>> ⓘ
pub fn cat16(&self) -> Arc<CategoricalArray<u16>> ⓘ
Returns the inner array as Arc<CategoricalArray<u16>>, converting when the variant differs.
- The matching variant returns as a shared handle without copying data.
- Panics on failure. Consider the try variant for a safe alternative.
Sourcepub fn try_cat16(&self) -> Result<Arc<CategoricalArray<u16>>, MinarrowError>
pub fn try_cat16(&self) -> Result<Arc<CategoricalArray<u16>>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - The matching variant returns as a shared handle without copying data.
Trait Implementations§
Source§impl Concatenate for TextArray
impl Concatenate for TextArray
Source§impl From<TextArray> for TextArrayV
impl From<TextArray> for TextArrayV
Source§impl Shape for TextArray
impl Shape for TextArray
impl StructuralPartialEq for TextArray
Auto Trait Implementations§
impl !RefUnwindSafe for TextArray
impl !UnwindSafe for TextArray
impl Freeze for TextArray
impl Send for TextArray
impl Sync for TextArray
impl Unpin for TextArray
impl UnsafeUnpin for TextArray
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CustomValue for T
impl<T> CustomValue for T
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> Key for Twhere
T: Clone,
impl<T> Key for Twhere
T: Clone,
impl<T> PlanCallbackArgs for T
impl<T> PlanCallbackOut for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more