Struct BooleanArray
pub struct BooleanArray {
values: BooleanBuffer,
nulls: Option<NullBuffer>,
}Expand description
An array of boolean values
§Example: From a Vec
let arr: BooleanArray = vec![true, true, false].into();§Example: From an optional Vec
let arr: BooleanArray = vec![Some(true), None, Some(false)].into();§Example: From an iterator
let arr: BooleanArray = (0..5).map(|x| (x % 2 == 0).then(|| x % 3 == 0)).collect();
let values: Vec<_> = arr.iter().collect();
assert_eq!(&values, &[Some(true), None, Some(false), None, Some(false)])§Example: Using Builder
let mut builder = BooleanBuilder::new();
builder.append_value(true);
builder.append_null();
builder.append_value(false);
let array = builder.finish();
let values: Vec<_> = array.iter().collect();
assert_eq!(&values, &[Some(true), None, Some(false)])Fields§
§values: BooleanBuffer§nulls: Option<NullBuffer>Implementations§
§impl BooleanArray
impl BooleanArray
pub fn new(values: BooleanBuffer, nulls: Option<NullBuffer>) -> BooleanArray
pub fn new(values: BooleanBuffer, nulls: Option<NullBuffer>) -> BooleanArray
Create a new BooleanArray from the provided values and nulls
§Panics
Panics if values.len() != nulls.len()
pub fn new_null(len: usize) -> BooleanArray
pub fn new_null(len: usize) -> BooleanArray
Create a new BooleanArray with length len consisting only of nulls
pub fn new_scalar(value: bool) -> Scalar<BooleanArray>
pub fn new_scalar(value: bool) -> Scalar<BooleanArray>
Create a new Scalar from value
pub fn new_from_packed(
buffer: impl Into<Buffer>,
offset: usize,
len: usize,
) -> BooleanArray
pub fn new_from_packed( buffer: impl Into<Buffer>, offset: usize, len: usize, ) -> BooleanArray
Create a new BooleanArray from a Buffer specified by offset and len, the offset and len in bits
Logically convert each bit in Buffer to boolean and use it to build BooleanArray.
using this method will make the following points self-evident:
- there is no
nullin the constructedBooleanArray; - without considering
buffer.into(), this method is efficient because there is no need to perform pack and unpack operations on boolean;
pub fn new_from_u8(value: &[u8]) -> BooleanArray
pub fn new_from_u8(value: &[u8]) -> BooleanArray
Create a new BooleanArray from &[u8]
This method uses new_from_packed and constructs a Buffer using value, and offset is set to 0 and len is set to value.len() * 8
using this method will make the following points self-evident:
- there is no
nullin the constructedBooleanArray; - the length of the constructed
BooleanArrayis always a multiple of 8;
pub fn slice(&self, offset: usize, length: usize) -> BooleanArray
pub fn slice(&self, offset: usize, length: usize) -> BooleanArray
Returns a zero-copy slice of this array with the indicated offset and length.
pub fn builder(capacity: usize) -> BooleanBuilder
pub fn builder(capacity: usize) -> BooleanBuilder
Returns a new boolean array builder
pub fn values(&self) -> &BooleanBuffer
pub fn values(&self) -> &BooleanBuffer
Returns the underlying BooleanBuffer holding all the values of this array
pub fn true_count(&self) -> usize
pub fn true_count(&self) -> usize
Returns the number of non null, true values within this array
pub fn false_count(&self) -> usize
pub fn false_count(&self) -> usize
Returns the number of non null, false values within this array
pub unsafe fn value_unchecked(&self, i: usize) -> bool
pub unsafe fn value_unchecked(&self, i: usize) -> bool
pub fn take_iter<'a>(
&'a self,
indexes: impl Iterator<Item = Option<usize>> + 'a,
) -> impl Iterator<Item = Option<bool>> + 'a
pub fn take_iter<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<bool>> + 'a
Returns an iterator that returns the values of array.value(i) for an iterator with each element i
pub unsafe fn take_iter_unchecked<'a>(
&'a self,
indexes: impl Iterator<Item = Option<usize>> + 'a,
) -> impl Iterator<Item = Option<bool>> + 'a
pub unsafe fn take_iter_unchecked<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<bool>> + 'a
Returns an iterator that returns the values of array.value(i) for an iterator with each element i
§Safety
caller must ensure that the offsets in the iterator are less than the array len()
pub fn from_unary<T, F>(left: T, op: F) -> BooleanArray
pub fn from_unary<T, F>(left: T, op: F) -> BooleanArray
Create a BooleanArray by evaluating the operation for
each element of the provided array
let array = Int32Array::from(vec![1, 2, 3, 4, 5]);
let r = BooleanArray::from_unary(&array, |x| x > 2);
assert_eq!(&r, &BooleanArray::from(vec![false, false, true, true, true]));pub fn from_binary<T, S, F>(left: T, right: S, op: F) -> BooleanArraywhere
T: ArrayAccessor,
S: ArrayAccessor,
F: FnMut(<T as ArrayAccessor>::Item, <S as ArrayAccessor>::Item) -> bool,
pub fn from_binary<T, S, F>(left: T, right: S, op: F) -> BooleanArraywhere
T: ArrayAccessor,
S: ArrayAccessor,
F: FnMut(<T as ArrayAccessor>::Item, <S as ArrayAccessor>::Item) -> bool,
Create a BooleanArray by evaluating the binary operation for
each element of the provided arrays
let a = Int32Array::from(vec![1, 2, 3, 4, 5]);
let b = Int32Array::from(vec![1, 2, 0, 2, 5]);
let r = BooleanArray::from_binary(&a, &b, |a, b| a == b);
assert_eq!(&r, &BooleanArray::from(vec![true, true, false, false, true]));§Panics
This function panics if left and right are not the same length
pub fn into_parts(self) -> (BooleanBuffer, Option<NullBuffer>)
pub fn into_parts(self) -> (BooleanBuffer, Option<NullBuffer>)
Deconstruct this array into its constituent parts
§impl<'a> BooleanArray
impl<'a> BooleanArray
pub fn iter(&'a self) -> ArrayIter<&'a BooleanArray> ⓘ
pub fn iter(&'a self) -> ArrayIter<&'a BooleanArray> ⓘ
constructs a new iterator
§impl BooleanArray
impl BooleanArray
pub unsafe fn from_trusted_len_iter<I, P>(iter: I) -> BooleanArraywhere
P: Into<BooleanAdapter>,
I: ExactSizeIterator<Item = P>,
pub unsafe fn from_trusted_len_iter<I, P>(iter: I) -> BooleanArraywhere
P: Into<BooleanAdapter>,
I: ExactSizeIterator<Item = P>,
Creates a BooleanArray from an iterator of trusted length.
§Safety
The iterator must be TrustedLen.
I.e. that size_hint().1 correctly reports its length. Note that this is a stronger
guarantee that ExactSizeIterator provides which could still report a wrong length.
§Panics
Panics if the iterator does not report an upper bound on size_hint().
Trait Implementations§
§impl Array for BooleanArray
impl Array for BooleanArray
§fn slice(&self, offset: usize, length: usize) -> Arc<dyn Array>
fn slice(&self, offset: usize, length: usize) -> Arc<dyn Array>
§fn shrink_to_fit(&mut self)
fn shrink_to_fit(&mut self)
§fn offset(&self) -> usize
fn offset(&self) -> usize
0. Read more§fn nulls(&self) -> Option<&NullBuffer>
fn nulls(&self) -> Option<&NullBuffer>
§fn logical_null_count(&self) -> usize
fn logical_null_count(&self) -> usize
§fn get_buffer_memory_size(&self) -> usize
fn get_buffer_memory_size(&self) -> usize
§fn get_array_memory_size(&self) -> usize
fn get_array_memory_size(&self) -> usize
get_buffer_memory_size() and
includes the overhead of the data structures that contain the pointers to the various buffers.§fn logical_nulls(&self) -> Option<NullBuffer>
fn logical_nulls(&self) -> Option<NullBuffer>
NullBuffer that represents the logical
null values of this array, if any. Read more§fn null_count(&self) -> usize
fn null_count(&self) -> usize
§fn is_nullable(&self) -> bool
fn is_nullable(&self) -> bool
false if the array is guaranteed to not contain any logical nulls Read more§impl ArrayAccessor for &BooleanArray
impl ArrayAccessor for &BooleanArray
§fn value(&self, index: usize) -> <&BooleanArray as ArrayAccessor>::Item
fn value(&self, index: usize) -> <&BooleanArray as ArrayAccessor>::Item
i Read more§unsafe fn value_unchecked(
&self,
index: usize,
) -> <&BooleanArray as ArrayAccessor>::Item
unsafe fn value_unchecked( &self, index: usize, ) -> <&BooleanArray as ArrayAccessor>::Item
i 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