Struct GenericByteArray
pub struct GenericByteArray<T>where
T: ByteArrayType,{
data_type: DataType,
value_offsets: OffsetBuffer<<T as ByteArrayType>::Offset>,
value_data: Buffer,
nulls: Option<NullBuffer>,
}Expand description
An array of variable length byte arrays
See StringArray and LargeStringArray for storing utf8 encoded string data
See BinaryArray and LargeBinaryArray for storing arbitrary bytes
§Example: From a Vec
let arr: GenericByteArray<Utf8Type> = vec!["hello", "world", ""].into();
assert_eq!(arr.value_data(), b"helloworld");
assert_eq!(arr.value_offsets(), &[0, 5, 10, 10]);
let values: Vec<_> = arr.iter().collect();
assert_eq!(values, &[Some("hello"), Some("world"), Some("")]);§Example: From an optional Vec
let arr: GenericByteArray<Utf8Type> = vec![Some("hello"), Some("world"), Some(""), None].into();
assert_eq!(arr.value_data(), b"helloworld");
assert_eq!(arr.value_offsets(), &[0, 5, 10, 10, 10]);
let values: Vec<_> = arr.iter().collect();
assert_eq!(values, &[Some("hello"), Some("world"), Some(""), None]);§Example: From an iterator of option
let arr: GenericByteArray<Utf8Type> = (0..5).map(|x| (x % 2 == 0).then(|| x.to_string())).collect();
let values: Vec<_> = arr.iter().collect();
assert_eq!(values, &[Some("0"), None, Some("2"), None, Some("4")]);§Example: Using Builder
let mut builder = GenericByteBuilder::<Utf8Type>::new();
builder.append_value("hello");
builder.append_null();
builder.append_value("world");
let array = builder.finish();
let values: Vec<_> = array.iter().collect();
assert_eq!(values, &[Some("hello"), None, Some("world")]);Fields§
§data_type: DataType§value_offsets: OffsetBuffer<<T as ByteArrayType>::Offset>§value_data: Buffer§nulls: Option<NullBuffer>Implementations§
§impl<OffsetSize> GenericByteArray<GenericBinaryType<OffsetSize>>where
OffsetSize: OffsetSizeTrait,
impl<OffsetSize> GenericByteArray<GenericBinaryType<OffsetSize>>where
OffsetSize: OffsetSizeTrait,
pub fn from_vec(
v: Vec<&[u8]>,
) -> GenericByteArray<GenericBinaryType<OffsetSize>>
pub fn from_vec( v: Vec<&[u8]>, ) -> GenericByteArray<GenericBinaryType<OffsetSize>>
Creates a GenericBinaryArray from a vector of byte slices
See also Self::from_iter_values
pub fn from_opt_vec(
v: Vec<Option<&[u8]>>,
) -> GenericByteArray<GenericBinaryType<OffsetSize>>
pub fn from_opt_vec( v: Vec<Option<&[u8]>>, ) -> GenericByteArray<GenericBinaryType<OffsetSize>>
Creates a GenericBinaryArray from a vector of Optional (null) byte slices
pub fn take_iter<'a>(
&'a self,
indexes: impl Iterator<Item = Option<usize>> + 'a,
) -> impl Iterator<Item = Option<&'a [u8]>>
pub fn take_iter<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<&'a [u8]>>
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<&'a [u8]>>
pub unsafe fn take_iter_unchecked<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<&'a [u8]>>
Returns an iterator that returns the values of array.value(i) for an iterator with each element i
§Safety
caller must ensure that the indexes in the iterator are less than the array.len()
§impl<T> GenericByteArray<T>where
T: ByteArrayType,
impl<T> GenericByteArray<T>where
T: ByteArrayType,
pub fn new(
offsets: OffsetBuffer<<T as ByteArrayType>::Offset>,
values: Buffer,
nulls: Option<NullBuffer>,
) -> GenericByteArray<T>
pub fn new( offsets: OffsetBuffer<<T as ByteArrayType>::Offset>, values: Buffer, nulls: Option<NullBuffer>, ) -> GenericByteArray<T>
Create a new GenericByteArray from the provided parts, panicking on failure
§Panics
Panics if GenericByteArray::try_new returns an error
pub fn try_new(
offsets: OffsetBuffer<<T as ByteArrayType>::Offset>,
values: Buffer,
nulls: Option<NullBuffer>,
) -> Result<GenericByteArray<T>, ArrowError>
pub fn try_new( offsets: OffsetBuffer<<T as ByteArrayType>::Offset>, values: Buffer, nulls: Option<NullBuffer>, ) -> Result<GenericByteArray<T>, ArrowError>
Create a new GenericByteArray from the provided parts, returning an error on failure
§Errors
offsets.len() - 1 != nulls.len()- Any consecutive pair of
offsetsdoes not denote a valid slice ofvalues
pub unsafe fn new_unchecked(
offsets: OffsetBuffer<<T as ByteArrayType>::Offset>,
values: Buffer,
nulls: Option<NullBuffer>,
) -> GenericByteArray<T>
pub unsafe fn new_unchecked( offsets: OffsetBuffer<<T as ByteArrayType>::Offset>, values: Buffer, nulls: Option<NullBuffer>, ) -> GenericByteArray<T>
Create a new GenericByteArray from the provided parts, without validation
§Safety
Safe if Self::try_new would not error
pub fn new_null(len: usize) -> GenericByteArray<T>
pub fn new_null(len: usize) -> GenericByteArray<T>
Create a new GenericByteArray of length len where all values are null
pub fn new_scalar(
value: impl AsRef<<T as ByteArrayType>::Native>,
) -> Scalar<GenericByteArray<T>>
pub fn new_scalar( value: impl AsRef<<T as ByteArrayType>::Native>, ) -> Scalar<GenericByteArray<T>>
Create a new Scalar from v
pub fn new_repeated(
value: impl AsRef<<T as ByteArrayType>::Native>,
repeat_count: usize,
) -> GenericByteArray<T>
pub fn new_repeated( value: impl AsRef<<T as ByteArrayType>::Native>, repeat_count: usize, ) -> GenericByteArray<T>
Create a new GenericByteArray where value is repeated repeat_count times.
§Panics
This will panic if value’s length multiplied by repeat_count overflows usize.
pub fn from_iter_values<Ptr, I>(iter: I) -> GenericByteArray<T>
pub fn from_iter_values<Ptr, I>(iter: I) -> GenericByteArray<T>
Creates a GenericByteArray based on an iterator of values without nulls
§Panics
Panics if the iterator has no upper bound on its size hint, or if the total
length of the values exceeds T::Offset::MAX
pub fn into_parts(
self,
) -> (OffsetBuffer<<T as ByteArrayType>::Offset>, Buffer, Option<NullBuffer>)
pub fn into_parts( self, ) -> (OffsetBuffer<<T as ByteArrayType>::Offset>, Buffer, Option<NullBuffer>)
Deconstruct this array into its constituent parts
pub fn value_length(&self, i: usize) -> <T as ByteArrayType>::Offset
pub fn value_length(&self, i: usize) -> <T as ByteArrayType>::Offset
pub fn offsets(&self) -> &OffsetBuffer<<T as ByteArrayType>::Offset>
pub fn offsets(&self) -> &OffsetBuffer<<T as ByteArrayType>::Offset>
Returns a reference to the offsets of this array
Unlike Self::value_offsets this returns the OffsetBuffer
allowing for zero-copy cloning
pub fn values(&self) -> &Buffer
pub fn values(&self) -> &Buffer
Returns the values of this array
Unlike Self::value_data this returns the Buffer
allowing for zero-copy cloning
pub fn value_data(&self) -> &[u8] ⓘ
pub fn value_data(&self) -> &[u8] ⓘ
Returns the raw value data
pub fn value_offsets(&self) -> &[<T as ByteArrayType>::Offset]
pub fn value_offsets(&self) -> &[<T as ByteArrayType>::Offset]
Returns the offset values in the offsets buffer
pub unsafe fn value_unchecked(&self, i: usize) -> &<T as ByteArrayType>::Native
pub unsafe fn value_unchecked(&self, i: usize) -> &<T as ByteArrayType>::Native
pub fn value(&self, i: usize) -> &<T as ByteArrayType>::Native
pub fn value(&self, i: usize) -> &<T as ByteArrayType>::Native
pub fn iter(&self) -> ArrayIter<&GenericByteArray<T>> ⓘ
pub fn iter(&self) -> ArrayIter<&GenericByteArray<T>> ⓘ
constructs a new iterator
pub fn slice(&self, offset: usize, length: usize) -> GenericByteArray<T>
pub fn slice(&self, offset: usize, length: usize) -> GenericByteArray<T>
Returns a zero-copy slice of this array with the indicated offset and length.
§Panics
Panics if offset + length > self.len()
pub fn into_builder(self) -> Result<GenericByteBuilder<T>, GenericByteArray<T>>
pub fn into_builder(self) -> Result<GenericByteBuilder<T>, GenericByteArray<T>>
Returns GenericByteBuilder of this byte array for mutating its values if the underlying
offset and data buffers are not shared by others.
§impl<OffsetSize> GenericByteArray<GenericStringType<OffsetSize>>where
OffsetSize: OffsetSizeTrait,
impl<OffsetSize> GenericByteArray<GenericStringType<OffsetSize>>where
OffsetSize: OffsetSizeTrait,
pub fn num_chars(&self, i: usize) -> usize
pub fn num_chars(&self, i: usize) -> usize
Returns the number of Unicode Scalar Value in the string at index i.
§Performance
This function has O(n) time complexity where n is the string length.
If you can make sure that all chars in the string are in the range U+0x0000 ~ U+0x007F,
please use the function value_length which has O(1) time complexity.
pub fn take_iter<'a>(
&'a self,
indexes: impl Iterator<Item = Option<usize>> + 'a,
) -> impl Iterator<Item = Option<&'a str>>
pub fn take_iter<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<&'a str>>
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<&'a str>>
pub unsafe fn take_iter_unchecked<'a>( &'a self, indexes: impl Iterator<Item = Option<usize>> + 'a, ) -> impl Iterator<Item = Option<&'a str>>
Returns an iterator that returns the values of array.value(i) for an iterator with each element i
§Safety
caller must ensure that the indexes in the iterator are less than the array.len()
pub fn try_from_binary(
v: GenericByteArray<GenericBinaryType<OffsetSize>>,
) -> Result<GenericByteArray<GenericStringType<OffsetSize>>, ArrowError>
pub fn try_from_binary( v: GenericByteArray<GenericBinaryType<OffsetSize>>, ) -> Result<GenericByteArray<GenericStringType<OffsetSize>>, ArrowError>
Fallibly creates a GenericStringArray from a GenericBinaryArray returning
an error if GenericBinaryArray contains invalid UTF-8 data
Trait Implementations§
§impl<T> Array for GenericByteArray<T>where
T: ByteArrayType,
SAFETY: Correctly implements the contract of Arrow Arrays
impl<T> Array for GenericByteArray<T>where
T: ByteArrayType,
SAFETY: Correctly implements the contract of Arrow Arrays
§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 claim(&self, pool: &dyn MemoryPool)
fn claim(&self, pool: &dyn MemoryPool)
§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<'a, T> ArrayAccessor for &'a GenericByteArray<T>where
T: ByteArrayType,
impl<'a, T> ArrayAccessor for &'a GenericByteArray<T>where
T: ByteArrayType,
§type Item = &'a <T as ByteArrayType>::Native
type Item = &'a <T as ByteArrayType>::Native
§fn value(
&self,
index: usize,
) -> <&'a GenericByteArray<T> as ArrayAccessor>::Item
fn value( &self, index: usize, ) -> <&'a GenericByteArray<T> as ArrayAccessor>::Item
i Read more§unsafe fn value_unchecked(
&self,
index: usize,
) -> <&'a GenericByteArray<T> as ArrayAccessor>::Item
unsafe fn value_unchecked( &self, index: usize, ) -> <&'a GenericByteArray<T> as ArrayAccessor>::Item
i Read more§impl<'a, O> BinaryArrayType<'a> for &'a GenericByteArray<GenericBinaryType<O>>where
O: OffsetSizeTrait,
impl<'a, O> BinaryArrayType<'a> for &'a GenericByteArray<GenericBinaryType<O>>where
O: OffsetSizeTrait,
§fn iter(&self) -> ArrayIter<&'a GenericByteArray<GenericBinaryType<O>>> ⓘ
fn iter(&self) -> ArrayIter<&'a GenericByteArray<GenericBinaryType<O>>> ⓘ
§impl<T> Clone for GenericByteArray<T>where
T: ByteArrayType,
impl<T> Clone for GenericByteArray<T>where
T: ByteArrayType,
§fn clone(&self) -> GenericByteArray<T>
fn clone(&self) -> GenericByteArray<T>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl<T> Debug for GenericByteArray<T>where
T: ByteArrayType,
impl<T> Debug for GenericByteArray<T>where
T: ByteArrayType,
§impl<O> DisplayIndex for &GenericByteArray<GenericBinaryType<O>>where
O: OffsetSizeTrait,
impl<O> DisplayIndex for &GenericByteArray<GenericBinaryType<O>>where
O: OffsetSizeTrait,
§impl<FROM, V> From<&GenericByteArray<FROM>> for GenericByteViewArray<V>where
FROM: ByteArrayType,
<FROM as ByteArrayType>::Offset: OffsetSizeTrait + ToPrimitive,
V: ByteViewType<Native = <FROM as ByteArrayType>::Native>,
Efficiently convert a GenericByteArray to a GenericByteViewArray
impl<FROM, V> From<&GenericByteArray<FROM>> for GenericByteViewArray<V>where
FROM: ByteArrayType,
<FROM as ByteArrayType>::Offset: OffsetSizeTrait + ToPrimitive,
V: ByteViewType<Native = <FROM as ByteArrayType>::Native>,
Efficiently convert a GenericByteArray to a GenericByteViewArray
For example this method can convert a StringArray to a
StringViewArray.
If the offsets are all less than u32::MAX, the new GenericByteViewArray
is built without copying the underlying string data (views are created
directly into the existing buffer)