vortex_runend/compute/
scalar_at.rs1use vortex_array::compute::{ScalarAtFn, scalar_at};
2use vortex_error::VortexResult;
3use vortex_scalar::Scalar;
4
5use crate::{RunEndArray, RunEndEncoding};
6
7impl ScalarAtFn<&RunEndArray> for RunEndEncoding {
8 fn scalar_at(&self, array: &RunEndArray, index: usize) -> VortexResult<Scalar> {
9 scalar_at(array.values(), array.find_physical_index(index)?)
10 }
11}
12
13#[cfg(test)]
14mod tests {
15 use vortex_array::Array;
16 use vortex_array::arrays::PrimitiveArray;
17 use vortex_array::compute::scalar_at;
18
19 use crate::RunEndArray;
20
21 #[test]
22 fn ree_scalar_at_end() {
23 let scalar = scalar_at(
24 &RunEndArray::encode(
25 PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array(),
26 )
27 .unwrap(),
28 11,
29 )
30 .unwrap();
31 assert_eq!(scalar, 5.into());
32 }
33}