vortex_array/arrays/primitive/compute/
slice.rs

1use 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}