pub struct DictionaryArray<K>where
K: DictionaryKey,{ /* private fields */ }Expand description
An Array whose values are stored as indices. This Array is useful when the cardinality of
values is low compared to the length of the Array.
§Safety
This struct guarantees that each item of DictionaryArray::keys is castable to usize and
its value is smaller than DictionaryArray::values.len(). In other words, you can safely
use unchecked calls to retrive the values
Implementations§
source§impl<K> DictionaryArray<K>where
K: DictionaryKey,
impl<K> DictionaryArray<K>where
K: DictionaryKey,
sourcepub fn try_new(
data_type: DataType,
keys: PrimitiveArray<K>,
values: Box<dyn Array>
) -> Result<DictionaryArray<K>, Error>
pub fn try_new( data_type: DataType, keys: PrimitiveArray<K>, values: Box<dyn Array> ) -> Result<DictionaryArray<K>, Error>
Returns a new DictionaryArray.
§Implementation
This function is O(N) where N is the length of keys
§Errors
This function errors iff
- the
data_type’s logical type is not aDictionaryArray - the
data_type’s keys is not compatible withkeys - the
data_type’s values’s data_type is not equal withvalues.data_type() - any of the keys’s values is not represented in
usizeor is>= values.len()
sourcepub fn try_from_keys(
keys: PrimitiveArray<K>,
values: Box<dyn Array>
) -> Result<DictionaryArray<K>, Error>
pub fn try_from_keys( keys: PrimitiveArray<K>, values: Box<dyn Array> ) -> Result<DictionaryArray<K>, Error>
Returns a new DictionaryArray.
§Implementation
This function is O(N) where N is the length of keys
§Errors
This function errors iff
- any of the keys’s values is not represented in
usizeor is>= values.len()
sourcepub unsafe fn try_new_unchecked(
data_type: DataType,
keys: PrimitiveArray<K>,
values: Box<dyn Array>
) -> Result<DictionaryArray<K>, Error>
pub unsafe fn try_new_unchecked( data_type: DataType, keys: PrimitiveArray<K>, values: Box<dyn Array> ) -> Result<DictionaryArray<K>, Error>
Returns a new DictionaryArray.
§Errors
This function errors iff
- the
data_type’s logical type is not aDictionaryArray - the
data_type’s keys is not compatible withkeys - the
data_type’s values’s data_type is not equal withvalues.data_type()
§Safety
The caller must ensure that every keys’s values is represented in usize and is < values.len()
sourcepub fn new_empty(data_type: DataType) -> DictionaryArray<K>
pub fn new_empty(data_type: DataType) -> DictionaryArray<K>
Returns a new empty DictionaryArray.
sourcepub fn new_null(data_type: DataType, length: usize) -> DictionaryArray<K>
pub fn new_null(data_type: DataType, length: usize) -> DictionaryArray<K>
Returns an DictionaryArray whose all elements are null
sourcepub fn iter(
&self
) -> ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'_, K>, BitmapIter<'_>> ⓘ
pub fn iter( &self ) -> ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'_, K>, BitmapIter<'_>> ⓘ
Returns an iterator of Option<Box<dyn Scalar>>.
§Implementation
This function will allocate a new Scalar per item and is usually not performant.
Consider calling keys_iter and values, downcasting values, and iterating over that.
sourcepub fn values_iter(&self) -> DictionaryValuesIter<'_, K>
pub fn values_iter(&self) -> DictionaryValuesIter<'_, K>
Returns an iterator of Box<dyn Scalar>
§Implementation
This function will allocate a new Scalar per item and is usually not performant.
Consider calling keys_iter and values, downcasting values, and iterating over that.
sourcepub fn values_iter_typed<V>(
&self
) -> Result<DictionaryValuesIterTyped<'_, K, V>, Error>where
V: DictValue,
pub fn values_iter_typed<V>(
&self
) -> Result<DictionaryValuesIterTyped<'_, K, V>, Error>where
V: DictValue,
Returns an iterator over the the values [V::IterValue].
§Panics
Panics if the keys of this DictionaryArray have any null types.
If they do DictionaryArray::iter_typed should be called
sourcepub fn iter_typed<V>(
&self
) -> Result<ZipValidity<<V as DictValue>::IterValue<'_>, DictionaryValuesIterTyped<'_, K, V>, BitmapIter<'_>>, Error>where
V: DictValue,
pub fn iter_typed<V>(
&self
) -> Result<ZipValidity<<V as DictValue>::IterValue<'_>, DictionaryValuesIterTyped<'_, K, V>, BitmapIter<'_>>, Error>where
V: DictValue,
Returns an iterator over the the optional values of Option<V::IterValue>.
§Panics
This function panics if the values array
sourcepub fn data_type(&self) -> &DataType
pub fn data_type(&self) -> &DataType
Returns the DataType of this DictionaryArray
sourcepub fn is_ordered(&self) -> bool
pub fn is_ordered(&self) -> bool
Returns whether the values of this DictionaryArray are ordered
sourcepub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
pub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
sourcepub fn sliced(self, offset: usize, length: usize) -> DictionaryArray<K>
pub fn sliced(self, offset: usize, length: usize) -> DictionaryArray<K>
sourcepub unsafe fn sliced_unchecked(
self,
offset: usize,
length: usize
) -> DictionaryArray<K>
pub unsafe fn sliced_unchecked( self, offset: usize, length: usize ) -> DictionaryArray<K>
sourcepub fn with_validity(self, validity: Option<Bitmap>) -> DictionaryArray<K>
pub fn with_validity(self, validity: Option<Bitmap>) -> DictionaryArray<K>
Returns this DictionaryArray with a new validity.
§Panic
This function panics iff validity.len() != self.len().
sourcepub fn set_validity(&mut self, validity: Option<Bitmap>)
pub fn set_validity(&mut self, validity: Option<Bitmap>)
Sets the validity of the keys of this DictionaryArray.
§Panics
This function panics iff validity.len() != self.len().
sourcepub fn boxed(self) -> Box<dyn Array>
pub fn boxed(self) -> Box<dyn Array>
Boxes this array into a Box<dyn Array>.
sourcepub fn arced(self) -> Arc<dyn Array>
pub fn arced(self) -> Arc<dyn Array>
Arcs this array into a std::sync::Arc<dyn Array>.
sourcepub fn validity(&self) -> Option<&Bitmap>
pub fn validity(&self) -> Option<&Bitmap>
The optional validity. Equivalent to self.keys().validity().
sourcepub fn keys(&self) -> &PrimitiveArray<K>
pub fn keys(&self) -> &PrimitiveArray<K>
Returns the keys of the DictionaryArray. These keys can be used to fetch values
from values.
sourcepub fn keys_values_iter(&self) -> impl TrustedLen + Clone
pub fn keys_values_iter(&self) -> impl TrustedLen + Clone
Returns an iterator of the keys’ values of the DictionaryArray as usize
sourcepub fn keys_iter(&self) -> impl TrustedLen + Clone
pub fn keys_iter(&self) -> impl TrustedLen + Clone
Returns an iterator of the keys’ of the DictionaryArray as usize
sourcepub fn key_value(&self, index: usize) -> usize
pub fn key_value(&self, index: usize) -> usize
Returns the keys’ value of the DictionaryArray as usize
§Panics
This function panics iff index >= self.len()
sourcepub fn values(&self) -> &Box<dyn Array>
pub fn values(&self) -> &Box<dyn Array>
Returns the values of the DictionaryArray.
sourcepub fn value(&self, index: usize) -> Box<dyn Scalar>
pub fn value(&self, index: usize) -> Box<dyn Scalar>
Returns the value of the DictionaryArray at position i.
§Implementation
This function will allocate a new Scalar and is usually not performant.
Consider calling keys and values, downcasting values, and iterating over that.
§Panic
This function panics iff index >= self.len()
Trait Implementations§
source§impl<K> Array for DictionaryArray<K>where
K: DictionaryKey,
impl<K> Array for DictionaryArray<K>where
K: DictionaryKey,
source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Any, which enables downcasting to concrete types.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Any, which enables mutable downcasting to concrete types.source§fn len(&self) -> usize
fn len(&self) -> usize
Array. Every array has a length corresponding to the number of
elements (slots).source§fn data_type(&self) -> &DataType
fn data_type(&self) -> &DataType
DataType of the Array. In combination with Array::as_any, this can be
used to downcast trait objects (dyn Array) to concrete arrays.source§unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
source§unsafe fn is_null_unchecked(&self, i: usize) -> bool
unsafe fn is_null_unchecked(&self, i: usize) -> bool
i is null. Read moresource§impl<K> Clone for DictionaryArray<K>where
K: Clone + DictionaryKey,
impl<K> Clone for DictionaryArray<K>where
K: Clone + DictionaryKey,
source§fn clone(&self) -> DictionaryArray<K>
fn clone(&self) -> DictionaryArray<K>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl<K> Debug for DictionaryArray<K>where
K: DictionaryKey,
impl<K> Debug for DictionaryArray<K>where
K: DictionaryKey,
source§impl<'a, T> From<GrowableDictionary<'a, T>> for DictionaryArray<T>where
T: DictionaryKey,
impl<'a, T> From<GrowableDictionary<'a, T>> for DictionaryArray<T>where
T: DictionaryKey,
source§fn from(val: GrowableDictionary<'a, T>) -> DictionaryArray<T>
fn from(val: GrowableDictionary<'a, T>) -> DictionaryArray<T>
source§impl<K, M> From<MutableDictionaryArray<K, M>> for DictionaryArray<K>where
K: DictionaryKey,
M: MutableArray,
impl<K, M> From<MutableDictionaryArray<K, M>> for DictionaryArray<K>where
K: DictionaryKey,
M: MutableArray,
source§fn from(other: MutableDictionaryArray<K, M>) -> DictionaryArray<K>
fn from(other: MutableDictionaryArray<K, M>) -> DictionaryArray<K>
source§impl<'a, K> IntoIterator for &'a DictionaryArray<K>where
K: DictionaryKey,
impl<'a, K> IntoIterator for &'a DictionaryArray<K>where
K: DictionaryKey,
§type IntoIter = ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'a, K>, BitmapIter<'a>>
type IntoIter = ZipValidity<Box<dyn Scalar>, DictionaryValuesIter<'a, K>, BitmapIter<'a>>
source§fn into_iter(self) -> <&'a DictionaryArray<K> as IntoIterator>::IntoIter
fn into_iter(self) -> <&'a DictionaryArray<K> as IntoIterator>::IntoIter
source§impl<K> PartialEq<&(dyn Array + 'static)> for DictionaryArray<K>where
K: DictionaryKey,
impl<K> PartialEq<&(dyn Array + 'static)> for DictionaryArray<K>where
K: DictionaryKey,
source§impl<K> PartialEq for DictionaryArray<K>where
K: DictionaryKey,
impl<K> PartialEq for DictionaryArray<K>where
K: DictionaryKey,
source§fn eq(&self, other: &DictionaryArray<K>) -> bool
fn eq(&self, other: &DictionaryArray<K>) -> bool
self and other values to be equal, and is used
by ==.Auto Trait Implementations§
impl<K> Freeze for DictionaryArray<K>
impl<K> !RefUnwindSafe for DictionaryArray<K>
impl<K> Send for DictionaryArray<K>
impl<K> Sync for DictionaryArray<K>
impl<K> Unpin for DictionaryArray<K>
impl<K> !UnwindSafe for DictionaryArray<K>
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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
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 more