pub struct OffsetBuffer<I: OffsetSizeTrait> {
pub offsets: Vec<I>,
pub values: Vec<u8>,
}
Expand description
A buffer of variable-sized byte arrays that can be converted into
a corresponding [ArrayRef
]
Fields§
§offsets: Vec<I>
§values: Vec<u8>
Implementations§
Source§impl<I: OffsetSizeTrait> OffsetBuffer<I>
impl<I: OffsetSizeTrait> OffsetBuffer<I>
pub fn is_empty(&self) -> bool
Sourcepub fn try_push(&mut self, data: &[u8], validate_utf8: bool) -> Result<()>
pub fn try_push(&mut self, data: &[u8], validate_utf8: bool) -> Result<()>
If validate_utf8
this verifies that the first character of data
is
the start of a UTF-8 codepoint
Note: This does not verify that the entirety of data
is valid
UTF-8. This should be done by calling Self::check_valid_utf8
after
all data has been written
Sourcepub fn extend_from_dictionary<K: ArrowNativeType, V: ArrowNativeType>(
&mut self,
keys: &[K],
dict_offsets: &[V],
dict_values: &[u8],
) -> Result<()>
pub fn extend_from_dictionary<K: ArrowNativeType, V: ArrowNativeType>( &mut self, keys: &[K], dict_offsets: &[V], dict_values: &[u8], ) -> Result<()>
Extends this buffer with a list of keys
For each value key
in keys
this will insert
&dict_values[dict_offsets[key]..dict_offsets[key+1]]
Note: This will validate offsets are valid
Sourcepub fn check_valid_utf8(&self, start_offset: usize) -> Result<()>
pub fn check_valid_utf8(&self, start_offset: usize) -> Result<()>
Validates that &self.values[start_offset..]
is a valid UTF-8 sequence
This MUST be combined with validating that the offsets start on a character boundary, otherwise it would be possible for the values array to be a valid UTF-8 sequence, but not the individual string slices it contains
Self::try_push
can perform this validation check on insertion
Sourcepub fn into_array(
self,
null_buffer: Option<Buffer>,
data_type: ArrowType,
) -> ArrayRef
pub fn into_array( self, null_buffer: Option<Buffer>, data_type: ArrowType, ) -> ArrayRef
Converts this into an [ArrayRef
] with the provided data_type
and null_buffer
Trait Implementations§
Source§impl<I: Debug + OffsetSizeTrait> Debug for OffsetBuffer<I>
impl<I: Debug + OffsetSizeTrait> Debug for OffsetBuffer<I>
Source§impl<I: OffsetSizeTrait> Default for OffsetBuffer<I>
impl<I: OffsetSizeTrait> Default for OffsetBuffer<I>
Source§impl<I: OffsetSizeTrait> ValuesBuffer for OffsetBuffer<I>
impl<I: OffsetSizeTrait> ValuesBuffer for OffsetBuffer<I>
Source§fn pad_nulls(
&mut self,
read_offset: usize,
values_read: usize,
levels_read: usize,
valid_mask: &[u8],
)
fn pad_nulls( &mut self, read_offset: usize, values_read: usize, levels_read: usize, valid_mask: &[u8], )
ValuesBuffer
. Read moreAuto Trait Implementations§
impl<I> Freeze for OffsetBuffer<I>
impl<I> RefUnwindSafe for OffsetBuffer<I>where
I: RefUnwindSafe,
impl<I> Send for OffsetBuffer<I>
impl<I> Sync for OffsetBuffer<I>
impl<I> Unpin for OffsetBuffer<I>where
I: Unpin,
impl<I> UnwindSafe for OffsetBuffer<I>where
I: UnwindSafe,
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> 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