pub struct BooleanArray { /* private fields */ }
Expand description
A BooleanArray
is Arrow’s semantically equivalent of an immutable Vec<Option<bool>>
.
It implements Array
.
One way to think about a BooleanArray
is (DataType, Arc<Vec<u8>>, Option<Arc<Vec<u8>>>)
where:
- the first item is the array’s logical type
- the second is the immutable values
- the third is the immutable validity (whether a value is null or not as a bitmap).
The size of this struct is O(1)
, as all data is stored behind an std::sync::Arc
.
§Example
use polars_arrow::array::BooleanArray;
use polars_arrow::bitmap::Bitmap;
use polars_arrow::buffer::Buffer;
let array = BooleanArray::from([Some(true), None, Some(false)]);
assert_eq!(array.value(0), true);
assert_eq!(array.iter().collect::<Vec<_>>(), vec![Some(true), None, Some(false)]);
assert_eq!(array.values_iter().collect::<Vec<_>>(), vec![true, false, false]);
// the underlying representation
assert_eq!(array.values(), &Bitmap::from([true, false, false]));
assert_eq!(array.validity(), Some(&Bitmap::from([true, false, true])));
Implementations§
Source§impl BooleanArray
impl BooleanArray
Sourcepub fn try_new(
dtype: ArrowDataType,
values: Bitmap,
validity: Option<Bitmap>,
) -> PolarsResult<Self>
pub fn try_new( dtype: ArrowDataType, values: Bitmap, validity: Option<Bitmap>, ) -> PolarsResult<Self>
The canonical method to create a BooleanArray
out of low-end APIs.
§Errors
This function errors iff:
- The validity is not
None
and its length is different fromvalues
’s length - The
dtype
’sPhysicalType
is not equal toPhysicalType::Boolean
.
Sourcepub fn new(
dtype: ArrowDataType,
values: Bitmap,
validity: Option<Bitmap>,
) -> Self
pub fn new( dtype: ArrowDataType, values: Bitmap, validity: Option<Bitmap>, ) -> Self
Alias to Self::try_new().unwrap()
Sourcepub fn iter(&self) -> ZipValidity<bool, BitmapIter<'_>, BitmapIter<'_>> ⓘ
pub fn iter(&self) -> ZipValidity<bool, BitmapIter<'_>, BitmapIter<'_>> ⓘ
Returns an iterator over the optional values of this BooleanArray
.
Sourcepub fn values_iter(&self) -> BitmapIter<'_> ⓘ
pub fn values_iter(&self) -> BitmapIter<'_> ⓘ
Returns an iterator over the values of this BooleanArray
.
Sourcepub fn non_null_values_iter(&self) -> NonNullValuesIter<'_, BooleanArray> ⓘ
pub fn non_null_values_iter(&self) -> NonNullValuesIter<'_, BooleanArray> ⓘ
Returns an iterator of the non-null values.
Sourcepub fn values(&self) -> &Bitmap
pub fn values(&self) -> &Bitmap
The values Bitmap
.
Values on null slots are undetermined (they can be anything).
Sourcepub fn dtype(&self) -> &ArrowDataType
pub fn dtype(&self) -> &ArrowDataType
Returns the arrays’ ArrowDataType
.
Sourcepub unsafe fn value_unchecked(&self, i: usize) -> bool
pub unsafe fn value_unchecked(&self, i: usize) -> bool
Sourcepub fn slice(&mut self, offset: usize, length: usize)
pub fn slice(&mut self, offset: usize, length: usize)
Slices this BooleanArray
.
§Implementation
This operation is O(1)
as it amounts to increase up to two ref counts.
§Panic
This function panics iff offset + length > self.len()
.
Sourcepub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
pub unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
Slices this BooleanArray
.
§Implementation
This operation is O(1)
as it amounts to increase two ref counts.
§Safety
The caller must ensure that offset + length <= self.len()
.
Sourcepub unsafe fn sliced_unchecked(self, offset: usize, length: usize) -> Self
pub unsafe fn sliced_unchecked(self, offset: usize, length: usize) -> Self
Sourcepub fn with_validity(self, validity: Option<Bitmap>) -> Self
pub fn with_validity(self, validity: Option<Bitmap>) -> Self
Sourcepub fn set_validity(&mut self, validity: Option<Bitmap>)
pub fn set_validity(&mut self, validity: Option<Bitmap>)
Sourcepub fn take_validity(&mut self) -> Option<Bitmap>
pub fn take_validity(&mut self) -> Option<Bitmap>
Takes the validity of this array, leaving it without a validity mask.
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 with_values(&self, values: Bitmap) -> Self
pub fn with_values(&self, values: Bitmap) -> Self
Returns a clone of this BooleanArray
with new values.
§Panics
This function panics iff values.len() != self.len()
.
Sourcepub fn set_values(&mut self, values: Bitmap)
pub fn set_values(&mut self, values: Bitmap)
Sourcepub fn apply_values_mut<F: Fn(&mut MutableBitmap)>(&mut self, f: F)
pub fn apply_values_mut<F: Fn(&mut MutableBitmap)>(&mut self, f: F)
Applies a function f
to the values of this array, cloning the values
iff they are being shared with others
This is an API to use clone-on-write
§Implementation
This function is O(f)
if the data is not being shared, and O(N) + O(f)
if it is being shared (since it results in a O(N)
memcopy).
§Panics
This function panics if the function modifies the length of the MutableBitmap
.
Sourcepub fn into_mut(self) -> Either<Self, MutableBooleanArray> ⓘ
pub fn into_mut(self) -> Either<Self, MutableBooleanArray> ⓘ
Try to convert this BooleanArray
to a MutableBooleanArray
Sourcepub fn new_empty(dtype: ArrowDataType) -> Self
pub fn new_empty(dtype: ArrowDataType) -> Self
Returns a new empty BooleanArray
.
Sourcepub fn new_null(dtype: ArrowDataType, length: usize) -> Self
pub fn new_null(dtype: ArrowDataType, length: usize) -> Self
Returns a new BooleanArray
whose all slots are null / None
.
Sourcepub fn from_trusted_len_values_iter<I: TrustedLen<Item = bool>>(
iterator: I,
) -> Self
pub fn from_trusted_len_values_iter<I: TrustedLen<Item = bool>>( iterator: I, ) -> Self
Creates a new BooleanArray
from an TrustedLen
of bool
.
Sourcepub unsafe fn from_trusted_len_values_iter_unchecked<I: Iterator<Item = bool>>(
iterator: I,
) -> Self
pub unsafe fn from_trusted_len_values_iter_unchecked<I: Iterator<Item = bool>>( iterator: I, ) -> Self
Creates a new BooleanArray
from an TrustedLen
of bool
.
Use this over BooleanArray::from_trusted_len_iter
when the iterator is trusted len
but this crate does not mark it as such.
§Safety
The iterator must be TrustedLen
.
I.e. that size_hint().1
correctly reports its length.
Sourcepub fn from_slice<P: AsRef<[bool]>>(slice: P) -> Self
pub fn from_slice<P: AsRef<[bool]>>(slice: P) -> Self
Creates a new BooleanArray
from a slice of bool
.
Sourcepub unsafe fn from_trusted_len_iter_unchecked<I, P>(iterator: I) -> Self
pub unsafe fn from_trusted_len_iter_unchecked<I, P>(iterator: I) -> Self
Creates a BooleanArray
from an iterator of trusted length.
Use this over BooleanArray::from_trusted_len_iter
when the iterator is trusted len
but this crate does not mark it as such.
§Safety
The iterator must be TrustedLen
.
I.e. that size_hint().1
correctly reports its length.
Sourcepub fn from_trusted_len_iter<I, P>(iterator: I) -> Self
pub fn from_trusted_len_iter<I, P>(iterator: I) -> Self
Creates a BooleanArray
from a TrustedLen
.
Sourcepub unsafe fn try_from_trusted_len_iter_unchecked<E, I, P>(
iterator: I,
) -> Result<Self, E>
pub unsafe fn try_from_trusted_len_iter_unchecked<E, I, P>( iterator: I, ) -> Result<Self, E>
Creates a BooleanArray
from an falible iterator of trusted length.
§Safety
The iterator must be TrustedLen
.
I.e. that size_hint().1
correctly reports its length.
Sourcepub fn try_from_trusted_len_iter<E, I, P>(iterator: I) -> Result<Self, E>
pub fn try_from_trusted_len_iter<E, I, P>(iterator: I) -> Result<Self, E>
Creates a BooleanArray
from a TrustedLen
.
Sourcepub fn into_inner(self) -> (ArrowDataType, Bitmap, Option<Bitmap>)
pub fn into_inner(self) -> (ArrowDataType, Bitmap, Option<Bitmap>)
Returns its internal representation
Sourcepub unsafe fn from_inner_unchecked(
dtype: ArrowDataType,
values: Bitmap,
validity: Option<Bitmap>,
) -> Self
pub unsafe fn from_inner_unchecked( dtype: ArrowDataType, values: Bitmap, validity: Option<Bitmap>, ) -> Self
Creates a [BooleanArray]
from its internal representation.
This is the inverted from [BooleanArray::into_inner]
§Safety
Callers must ensure all invariants of this struct are upheld.
Trait Implementations§
Source§impl Array for BooleanArray
impl Array for BooleanArray
Source§fn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Any
, which enables downcasting to concrete types.Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
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 dtype(&self) -> &ArrowDataType
fn dtype(&self) -> &ArrowDataType
ArrowDataType
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 split_at_boxed_unchecked(
&self,
offset: usize,
) -> (Box<dyn Array>, Box<dyn Array>)
unsafe fn split_at_boxed_unchecked( &self, offset: usize, ) -> (Box<dyn Array>, Box<dyn Array>)
Source§unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
unsafe fn slice_unchecked(&mut self, offset: usize, length: usize)
fn has_nulls(&self) -> bool
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<'a> ArrayAccessor<'a> for BooleanArray
impl<'a> ArrayAccessor<'a> for BooleanArray
Source§impl ArrayFromIter<Option<bool>> for BooleanArray
impl ArrayFromIter<Option<bool>> for BooleanArray
fn arr_from_iter<I: IntoIterator<Item = Option<bool>>>(iter: I) -> Self
fn try_arr_from_iter<E, I: IntoIterator<Item = Result<Option<bool>, E>>>( iter: I, ) -> Result<Self, E>
fn arr_from_iter_trusted<I>(iter: I) -> Self
fn try_arr_from_iter_trusted<E, I>(iter: I) -> Result<Self, E>
Source§impl ArrayFromIter<bool> for BooleanArray
impl ArrayFromIter<bool> for BooleanArray
fn arr_from_iter<I: IntoIterator<Item = bool>>(iter: I) -> Self
fn try_arr_from_iter<E, I: IntoIterator<Item = Result<bool, E>>>( iter: I, ) -> Result<Self, E>
fn arr_from_iter_trusted<I>(iter: I) -> Self
fn try_arr_from_iter_trusted<E, I>(iter: I) -> Result<Self, E>
Source§impl Clone for BooleanArray
impl Clone for BooleanArray
Source§fn clone(&self) -> BooleanArray
fn clone(&self) -> BooleanArray
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BooleanArray
impl Debug for BooleanArray
Source§impl From<Bitmap> for BooleanArray
impl From<Bitmap> for BooleanArray
Source§impl<'a> From<GrowableBoolean<'a>> for BooleanArray
impl<'a> From<GrowableBoolean<'a>> for BooleanArray
Source§fn from(val: GrowableBoolean<'a>) -> Self
fn from(val: GrowableBoolean<'a>) -> Self
Source§impl From<MutableBooleanArray> for BooleanArray
impl From<MutableBooleanArray> for BooleanArray
Source§fn from(other: MutableBooleanArray) -> Self
fn from(other: MutableBooleanArray) -> Self
Source§impl FromData<Bitmap> for BooleanArray
impl FromData<Bitmap> for BooleanArray
fn from_data_default(values: Bitmap, validity: Option<Bitmap>) -> BooleanArray
Source§impl<Ptr: Borrow<Option<bool>>> FromIterator<Ptr> for BooleanArray
impl<Ptr: Borrow<Option<bool>>> FromIterator<Ptr> for BooleanArray
Source§fn from_iter<I: IntoIterator<Item = Ptr>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = Ptr>>(iter: I) -> Self
Source§impl FromIteratorReversed<Option<bool>> for BooleanArray
impl FromIteratorReversed<Option<bool>> for BooleanArray
fn from_trusted_len_iter_rev<I: TrustedLen<Item = Option<bool>>>( iter: I, ) -> Self
Source§impl FromIteratorReversed<bool> for BooleanArray
impl FromIteratorReversed<bool> for BooleanArray
fn from_trusted_len_iter_rev<I: TrustedLen<Item = bool>>(iter: I) -> Self
Source§impl FromTrustedLenIterator<Option<bool>> for BooleanArray
impl FromTrustedLenIterator<Option<bool>> for BooleanArray
fn from_iter_trusted_length<I: IntoIterator<Item = Option<bool>>>(
iter: I,
) -> Selfwhere
I::IntoIter: TrustedLen,
Source§impl FromTrustedLenIterator<bool> for BooleanArray
impl FromTrustedLenIterator<bool> for BooleanArray
fn from_iter_trusted_length<I: IntoIterator<Item = bool>>(iter: I) -> Selfwhere
I::IntoIter: TrustedLen,
Source§impl<'a> IntoIterator for &'a BooleanArray
impl<'a> IntoIterator for &'a BooleanArray
Source§impl IntoIterator for BooleanArray
impl IntoIterator for BooleanArray
Source§impl PartialEq<&(dyn Array + 'static)> for BooleanArray
impl PartialEq<&(dyn Array + 'static)> for BooleanArray
Source§impl PartialEq for BooleanArray
impl PartialEq for BooleanArray
Source§impl Splitable for BooleanArray
impl Splitable for BooleanArray
fn check_bound(&self, offset: usize) -> bool
Source§unsafe fn _split_at_unchecked(&self, offset: usize) -> (Self, Self)
unsafe fn _split_at_unchecked(&self, offset: usize) -> (Self, Self)
split_at_unchecked
. For any usage, prefer the using
split_at
or split_at_unchecked
. Read moreSource§impl StaticArray for BooleanArray
impl StaticArray for BooleanArray
type ValueT<'a> = bool
type ZeroableValueT<'a> = bool
type ValueIterT<'a> = BitmapIter<'a>
fn values_iter(&self) -> Self::ValueIterT<'_>
fn iter( &self, ) -> ZipValidity<Self::ValueT<'_>, Self::ValueIterT<'_>, BitmapIter<'_>> ⓘ
fn with_validity_typed(self, validity: Option<Bitmap>) -> Self
fn from_vec(v: Vec<Self::ValueT<'_>>, _dtype: ArrowDataType) -> Self
fn from_zeroable_vec(v: Vec<Self::ValueT<'_>>, _dtype: ArrowDataType) -> Self
fn full_null(length: usize, dtype: ArrowDataType) -> Self
fn full(length: usize, value: Self::ValueT<'_>, _dtype: ArrowDataType) -> Self
fn get(&self, idx: usize) -> Option<Self::ValueT<'_>>
fn last(&self) -> Option<Self::ValueT<'_>>
fn value(&self, idx: usize) -> Self::ValueT<'_>
fn as_slice(&self) -> Option<&[Self::ValueT<'_>]>
impl ArrowArray for BooleanArray
Auto Trait Implementations§
impl !Freeze for BooleanArray
impl RefUnwindSafe for BooleanArray
impl Send for BooleanArray
impl Sync for BooleanArray
impl Unpin for BooleanArray
impl UnwindSafe for BooleanArray
Blanket Implementations§
Source§impl<T, A> ArrayFromIterDtype<T> for Awhere
A: ParameterFreeDtypeStaticArray + ArrayFromIter<T>,
impl<T, A> ArrayFromIterDtype<T> for Awhere
A: ParameterFreeDtypeStaticArray + ArrayFromIter<T>,
fn arr_from_iter_with_dtype<I>(dtype: ArrowDataType, iter: I) -> Awhere
I: IntoIterator<Item = T>,
fn arr_from_iter_trusted_with_dtype<I>(dtype: ArrowDataType, iter: I) -> A
fn try_arr_from_iter_with_dtype<E, I>(
dtype: ArrowDataType,
iter: I,
) -> Result<A, E>where
I: IntoIterator<Item = Result<T, E>>,
fn try_arr_from_iter_trusted_with_dtype<E, I>( dtype: ArrowDataType, iter: I, ) -> Result<A, E>
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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