vortex_array/arrays/struct_/compute/
mask.rs

1use vortex_error::VortexResult;
2use vortex_mask::Mask;
3
4use crate::arrays::{StructArray, StructEncoding};
5use crate::compute::{MaskKernel, MaskKernelAdapter};
6use crate::{Array, ArrayRef, register_kernel};
7
8impl MaskKernel for StructEncoding {
9    fn mask(&self, array: &StructArray, filter_mask: &Mask) -> VortexResult<ArrayRef> {
10        let validity = array.validity().mask(filter_mask)?;
11
12        StructArray::try_new_with_dtype(
13            array.fields().to_vec(),
14            array.struct_dtype().clone(),
15            array.len(),
16            validity,
17        )
18        .map(|a| a.into_array())
19    }
20}
21register_kernel!(MaskKernelAdapter(StructEncoding).lift());