vortex_array/arrays/varbin/compute/
slice.rs1use std::ops::Range;
5
6use vortex_error::VortexResult;
7
8use crate::ArrayRef;
9use crate::IntoArray;
10use crate::arrays::SliceReduce;
11use crate::arrays::VarBinArray;
12use crate::arrays::VarBinVTable;
13
14impl SliceReduce for VarBinVTable {
15 fn slice(array: &Self::Array, range: Range<usize>) -> VortexResult<Option<ArrayRef>> {
16 VarBinVTable::_slice(array, range).map(Some)
17 }
18}
19
20impl VarBinVTable {
21 pub fn _slice(array: &VarBinArray, range: Range<usize>) -> VortexResult<ArrayRef> {
22 Ok(unsafe {
23 VarBinArray::new_unchecked_from_handle(
24 array.offsets().slice(range.start..range.end + 1)?,
25 array.bytes_handle().clone(),
26 array.dtype().clone(),
27 array.validity()?.slice(range)?,
28 )
29 .into_array()
30 })
31 }
32}