vortex_sparse/compute/
invert.rs

1use vortex_array::compute::{InvertFn, invert};
2use vortex_array::{Array, ArrayRef};
3use vortex_error::VortexResult;
4
5use crate::{SparseArray, SparseEncoding};
6
7impl InvertFn<&SparseArray> for SparseEncoding {
8    fn invert(&self, array: &SparseArray) -> VortexResult<ArrayRef> {
9        let inverted_fill = array.fill_scalar().as_bool().invert().into_scalar();
10        let inverted_patches = array
11            .patches()
12            .clone()
13            .map_values(|values| invert(&values))?;
14        SparseArray::try_new_from_patches(inverted_patches, inverted_fill).map(|a| a.into_array())
15    }
16}