vortex_array/arrays/varbin/vtable/
operations.rs1use std::ops::Range;
5
6use vortex_scalar::Scalar;
7
8use crate::Array;
9use crate::ArrayRef;
10use crate::IntoArray;
11use crate::arrays::VarBinArray;
12use crate::arrays::VarBinVTable;
13use crate::arrays::varbin_scalar;
14use crate::vtable::OperationsVTable;
15use crate::vtable::ValidityHelper;
16
17impl OperationsVTable<VarBinVTable> for VarBinVTable {
18 fn slice(array: &VarBinArray, range: Range<usize>) -> ArrayRef {
19 unsafe {
20 VarBinArray::new_unchecked(
21 array.offsets().slice(range.start..range.end + 1),
22 array.bytes().clone(),
23 array.dtype().clone(),
24 array.validity().slice(range),
25 )
26 .into_array()
27 }
28 }
29
30 fn scalar_at(array: &VarBinArray, index: usize) -> Scalar {
31 varbin_scalar(array.bytes_at(index), array.dtype())
32 }
33}