vortex_runend/compute/
scalar_at.rs

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