vortex_array/arrays/varbin/vtable/
operations.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use 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}