#[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: &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.
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.
Trait Implementations§
Source§impl From<TextArray> for TextArrayV
impl From<TextArray> for TextArrayV
impl StructuralPartialEq for TextArray
Auto Trait Implementations§
impl Freeze for TextArray
impl RefUnwindSafe for TextArray
impl Send for TextArray
impl Sync for TextArray
impl Unpin for TextArray
impl UnwindSafe 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
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,
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,
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 moreSource§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.