vortex_array/arrays/primitive/compute/
slice.rs1use vortex_dtype::match_each_native_ptype;
2use vortex_error::VortexResult;
3
4use crate::arrays::PrimitiveEncoding;
5use crate::arrays::primitive::PrimitiveArray;
6use crate::compute::SliceFn;
7use crate::variants::PrimitiveArrayTrait;
8use crate::{Array, ArrayRef};
9
10impl SliceFn<&PrimitiveArray> for PrimitiveEncoding {
11 fn slice(&self, array: &PrimitiveArray, start: usize, stop: usize) -> VortexResult<ArrayRef> {
12 match_each_native_ptype!(array.ptype(), |$T| {
13 Ok(PrimitiveArray::new(
14 array.buffer::<$T>().slice(start..stop),
15 array.validity().slice(start, stop)?,
16 )
17 .into_array())
18 })
19 }
20}