Struct re_viewer::external::re_chunk_store::external::arrow2::array::BooleanArray
pub struct BooleanArray {
data_type: DataType,
values: Bitmap,
validity: Option<Bitmap>,
}
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 re_arrow2::array::BooleanArray;
use re_arrow2::bitmap::Bitmap;
use re_arrow2::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])));
Fields§
§data_type: DataType
§values: Bitmap
§validity: Option<Bitmap>
Implementations§
§impl BooleanArray
impl BooleanArray
pub fn try_new(
data_type: DataType,
values: Bitmap,
validity: Option<Bitmap>
) -> Result<BooleanArray, Error>
pub fn try_new( data_type: DataType, values: Bitmap, validity: Option<Bitmap> ) -> Result<BooleanArray, Error>
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
data_type
’sPhysicalType
is not equal toPhysicalType::Boolean
.
pub fn new(
data_type: DataType,
values: Bitmap,
validity: Option<Bitmap>
) -> BooleanArray
pub fn new( data_type: DataType, values: Bitmap, validity: Option<Bitmap> ) -> BooleanArray
Alias to Self::try_new().unwrap()
pub 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
.
pub fn values_iter(&self) -> BitmapIter<'_> ⓘ
pub fn values_iter(&self) -> BitmapIter<'_> ⓘ
Returns an iterator over the values of this BooleanArray
.
pub fn values(&self) -> &Bitmap
pub fn values(&self) -> &Bitmap
The values Bitmap
.
Values on null slots are undetermined (they can be anything).
pub unsafe fn value_unchecked(&self, i: usize) -> bool
pub unsafe fn value_unchecked(&self, i: usize) -> bool
pub 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()
.
pub 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()
.
pub fn sliced(self, offset: usize, length: usize) -> BooleanArray
pub fn sliced(self, offset: usize, length: usize) -> BooleanArray
pub unsafe fn sliced_unchecked(
self,
offset: usize,
length: usize
) -> BooleanArray
pub unsafe fn sliced_unchecked( self, offset: usize, length: usize ) -> BooleanArray
pub fn with_validity(self, validity: Option<Bitmap>) -> BooleanArray
pub fn with_validity(self, validity: Option<Bitmap>) -> BooleanArray
pub fn set_validity(&mut self, validity: Option<Bitmap>)
pub fn set_validity(&mut self, validity: Option<Bitmap>)
pub fn boxed(self) -> Box<dyn Array>
pub fn boxed(self) -> Box<dyn Array>
Boxes this array into a Box<dyn Array>
.
pub fn arced(self) -> Arc<dyn Array>
pub fn arced(self) -> Arc<dyn Array>
Arcs this array into a std::sync::Arc<dyn Array>
.
pub fn with_values(&self, values: Bitmap) -> BooleanArray
pub fn with_values(&self, values: Bitmap) -> BooleanArray
Returns a clone of this BooleanArray
with new values.
§Panics
This function panics iff values.len() != self.len()
.
pub fn set_values(&mut self, values: Bitmap)
pub fn set_values(&mut self, values: Bitmap)
pub fn apply_values_mut<F>(&mut self, f: F)where
F: Fn(&mut MutableBitmap),
pub fn apply_values_mut<F>(&mut self, f: F)where
F: Fn(&mut MutableBitmap),
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
.
pub fn into_mut(self) -> Either<BooleanArray, MutableBooleanArray> ⓘ
pub fn into_mut(self) -> Either<BooleanArray, MutableBooleanArray> ⓘ
Try to convert this BooleanArray
to a MutableBooleanArray
pub fn new_empty(data_type: DataType) -> BooleanArray
pub fn new_empty(data_type: DataType) -> BooleanArray
Returns a new empty BooleanArray
.
pub fn new_null(data_type: DataType, length: usize) -> BooleanArray
pub fn new_null(data_type: DataType, length: usize) -> BooleanArray
Returns a new BooleanArray
whose all slots are null / None
.
pub fn from_trusted_len_values_iter<I>(iterator: I) -> BooleanArraywhere
I: TrustedLen<Item = bool>,
pub fn from_trusted_len_values_iter<I>(iterator: I) -> BooleanArraywhere
I: TrustedLen<Item = bool>,
Creates a new BooleanArray
from an TrustedLen
of bool
.
pub unsafe fn from_trusted_len_values_iter_unchecked<I>(
iterator: I
) -> BooleanArray
pub unsafe fn from_trusted_len_values_iter_unchecked<I>( iterator: I ) -> BooleanArray
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.
pub fn from_slice<P>(slice: P) -> BooleanArray
pub fn from_slice<P>(slice: P) -> BooleanArray
Creates a new BooleanArray
from a slice of bool
.
pub unsafe fn from_trusted_len_iter_unchecked<I, P>(iterator: I) -> BooleanArray
pub unsafe fn from_trusted_len_iter_unchecked<I, P>(iterator: I) -> BooleanArray
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.
pub fn from_trusted_len_iter<I, P>(iterator: I) -> BooleanArray
pub fn from_trusted_len_iter<I, P>(iterator: I) -> BooleanArray
Creates a BooleanArray
from a TrustedLen
.
pub unsafe fn try_from_trusted_len_iter_unchecked<E, I, P>(
iterator: I
) -> Result<BooleanArray, E>
pub unsafe fn try_from_trusted_len_iter_unchecked<E, I, P>( iterator: I ) -> Result<BooleanArray, 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.
pub fn try_from_trusted_len_iter<E, I, P>(
iterator: I
) -> Result<BooleanArray, E>
pub fn try_from_trusted_len_iter<E, I, P>( iterator: I ) -> Result<BooleanArray, E>
Creates a BooleanArray
from a TrustedLen
.
pub fn into_inner(self) -> (DataType, Bitmap, Option<Bitmap>)
pub fn into_inner(self) -> (DataType, Bitmap, Option<Bitmap>)
Returns its internal representation
pub unsafe fn from_inner_unchecked(
data_type: DataType,
values: Bitmap,
validity: Option<Bitmap>
) -> BooleanArray
pub unsafe fn from_inner_unchecked( data_type: DataType, values: Bitmap, validity: Option<Bitmap> ) -> BooleanArray
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§
§impl Arrow2Arrow for BooleanArray
impl Arrow2Arrow for BooleanArray
§impl Array for BooleanArray
impl Array for BooleanArray
§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Any
, which enables downcasting to concrete types.§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.§fn len(&self) -> usize
fn len(&self) -> usize
Array
. Every array has a length corresponding to the number of
elements (slots).§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.§fn null_count(&self) -> usize
fn null_count(&self) -> usize
§unsafe fn is_null_unchecked(&self, i: usize) -> bool
unsafe fn is_null_unchecked(&self, i: usize) -> bool
i
is null. Read more§impl Clone for BooleanArray
impl Clone for BooleanArray
§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 more§impl Debug for BooleanArray
impl Debug for BooleanArray
§impl<'a> From<GrowableBoolean<'a>> for BooleanArray
impl<'a> From<GrowableBoolean<'a>> for BooleanArray
§fn from(val: GrowableBoolean<'a>) -> BooleanArray
fn from(val: GrowableBoolean<'a>) -> BooleanArray
§impl From<MutableBooleanArray> for BooleanArray
impl From<MutableBooleanArray> for BooleanArray
§fn from(other: MutableBooleanArray) -> BooleanArray
fn from(other: MutableBooleanArray) -> BooleanArray
§impl<P> From<P> for BooleanArray
impl<P> From<P> for BooleanArray
§fn from(slice: P) -> BooleanArray
fn from(slice: P) -> BooleanArray
§impl<Ptr> FromIterator<Ptr> for BooleanArray
impl<Ptr> FromIterator<Ptr> for BooleanArray
§fn from_iter<I>(iter: I) -> BooleanArraywhere
I: IntoIterator<Item = Ptr>,
fn from_iter<I>(iter: I) -> BooleanArraywhere
I: IntoIterator<Item = Ptr>,
§impl<'a> IntoIterator for &'a BooleanArray
impl<'a> IntoIterator for &'a BooleanArray
§type IntoIter = ZipValidity<bool, BitmapIter<'a>, BitmapIter<'a>>
type IntoIter = ZipValidity<bool, BitmapIter<'a>, BitmapIter<'a>>
§fn into_iter(self) -> <&'a BooleanArray as IntoIterator>::IntoIter
fn into_iter(self) -> <&'a BooleanArray as IntoIterator>::IntoIter
§impl IntoIterator for BooleanArray
impl IntoIterator for BooleanArray
§impl PartialEq<&(dyn Array + 'static)> for BooleanArray
impl PartialEq<&(dyn Array + 'static)> for BooleanArray
§impl PartialEq for BooleanArray
impl PartialEq for BooleanArray
§fn eq(&self, other: &BooleanArray) -> bool
fn eq(&self, other: &BooleanArray) -> bool
self
and other
values to be equal, and is used
by ==
.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> 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>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request