vortex_array/arrays/chunked/compute/
invert.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use itertools::Itertools;
5use vortex_error::VortexResult;
6
7use crate::arrays::{ChunkedArray, ChunkedVTable};
8use crate::compute::{InvertKernel, InvertKernelAdapter, invert};
9use crate::{ArrayRef, IntoArray, register_kernel};
10
11impl InvertKernel for ChunkedVTable {
12    fn invert(&self, array: &ChunkedArray) -> VortexResult<ArrayRef> {
13        let chunks = array.chunks().iter().map(|c| invert(c)).try_collect()?;
14        // SAFETY: inverting preserves DType
15        unsafe { Ok(ChunkedArray::new_unchecked(chunks, array.dtype().clone()).into_array()) }
16    }
17}
18
19register_kernel!(InvertKernelAdapter(ChunkedVTable).lift());