#[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 append_array(&mut self, other: &TextArray)
pub fn append_array(&mut self, other: &TextArray)
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: &TextArray, offset: usize, len: usize, ) -> Result<(), MinarrowError>
Sourcepub fn insert_rows(
&mut self,
index: usize,
other: &TextArray,
) -> Result<(), MinarrowError>
pub fn insert_rows( &mut self, index: usize, other: &TextArray, ) -> 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<(TextArray, TextArray), MinarrowError>
pub fn split( self, index: usize, ) -> Result<(TextArray, TextArray), MinarrowError>
Splits the TextArray at the specified index, consuming self and returning two arrays.
Sourcepub fn str32_ref(&self) -> Result<&StringArray<u32>, MinarrowError>
pub fn str32_ref(&self) -> Result<&StringArray<u32>, MinarrowError>
Returns a reference to the inner StringArray<u32> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn str64_ref(&self) -> Result<&StringArray<u64>, MinarrowError>
pub fn str64_ref(&self) -> Result<&StringArray<u64>, MinarrowError>
Returns a reference to the inner StringArray<u64> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn cat32_ref(&self) -> Result<&CategoricalArray<u32>, MinarrowError>
pub fn cat32_ref(&self) -> Result<&CategoricalArray<u32>, MinarrowError>
Returns a reference to the inner CategoricalArray<u32> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn cat64_ref(&self) -> Result<&CategoricalArray<u64>, MinarrowError>
pub fn cat64_ref(&self) -> Result<&CategoricalArray<u64>, MinarrowError>
Returns a reference to the inner CategoricalArray<u64> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn cat8_ref(&self) -> Result<&CategoricalArray<u8>, MinarrowError>
pub fn cat8_ref(&self) -> Result<&CategoricalArray<u8>, MinarrowError>
Returns a reference to the inner CategoricalArray<u8> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn cat16_ref(&self) -> Result<&CategoricalArray<u16>, MinarrowError>
pub fn cat16_ref(&self) -> Result<&CategoricalArray<u16>, MinarrowError>
Returns a reference to the inner CategoricalArray<u16> if the variant matches.
No conversion or cloning is performed.
Sourcepub fn str32(self) -> Result<StringArray<u32>, MinarrowError>
pub fn str32(self) -> Result<StringArray<u32>, MinarrowError>
Casts to StringArray
- Converts via TryFrom,
- Uses CloneOnWrite (COW) when it’s already a
String32.
Sourcepub fn str64(self) -> Result<StringArray<u64>, MinarrowError>
pub fn str64(self) -> Result<StringArray<u64>, MinarrowError>
Casts to StringArray
- Converts via
FromorTryFrom, depending on the inner type - Uses CloneOnWrite (COW) when it’s already a
String64.
Sourcepub fn cat32(self) -> Result<CategoricalArray<u32>, MinarrowError>
pub fn cat32(self) -> Result<CategoricalArray<u32>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - Uses CloneOnWrite (COW) when it’s already a
Categorical32.
Sourcepub fn cat64(self) -> Result<CategoricalArray<u64>, MinarrowError>
pub fn cat64(self) -> Result<CategoricalArray<u64>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - Uses CloneOnWrite (COW) when it’s already a
Categorical32.
Sourcepub fn cat8(self) -> Result<CategoricalArray<u8>, MinarrowError>
pub fn cat8(self) -> Result<CategoricalArray<u8>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - Uses CloneOnWrite (COW) when it’s already a
Categorical8.
Sourcepub fn cat16(self) -> Result<CategoricalArray<u16>, MinarrowError>
pub fn cat16(self) -> Result<CategoricalArray<u16>, MinarrowError>
Casts to CategoricalArray
- Converts via
FromorTryFrom, depending on the inner type - Uses CloneOnWrite (COW) when it’s already a
Categorical16.