vortex_array/arrays/primitive/compute/
scalar_at.rs

1use vortex_dtype::match_each_native_ptype;
2use vortex_error::VortexResult;
3use vortex_scalar::Scalar;
4
5use crate::array::Array;
6use crate::arrays::PrimitiveEncoding;
7use crate::arrays::primitive::PrimitiveArray;
8use crate::compute::ScalarAtFn;
9use crate::variants::PrimitiveArrayTrait;
10
11impl ScalarAtFn<&PrimitiveArray> for PrimitiveEncoding {
12    fn scalar_at(&self, array: &PrimitiveArray, index: usize) -> VortexResult<Scalar> {
13        Ok(match_each_native_ptype!(array.ptype(), |$T| {
14            Scalar::primitive(array.as_slice::<$T>()[index], array.dtype().nullability())
15        }))
16    }
17}