use std::ops::Range;
use vortex_error::VortexResult;
use crate::ArrayRef;
use crate::IntoArray;
use crate::arrays::VarBinArray;
use crate::arrays::VarBinVTable;
use crate::arrays::slice::SliceReduce;
impl SliceReduce for VarBinVTable {
fn slice(array: &Self::Array, range: Range<usize>) -> VortexResult<Option<ArrayRef>> {
VarBinVTable::_slice(array, range).map(Some)
}
}
impl VarBinVTable {
pub fn _slice(array: &VarBinArray, range: Range<usize>) -> VortexResult<ArrayRef> {
Ok(unsafe {
VarBinArray::new_unchecked_from_handle(
array.offsets().slice(range.start..range.end + 1)?,
array.bytes_handle().clone(),
array.dtype().clone(),
array.validity()?.slice(range)?,
)
.into_array()
})
}
}