vortex_array/arrays/struct_/compute/
mask.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_error::VortexResult;
5use vortex_mask::Mask;
6
7use crate::ArrayRef;
8use crate::IntoArray;
9use crate::arrays::StructArray;
10use crate::arrays::StructVTable;
11use crate::compute::MaskKernel;
12use crate::compute::MaskKernelAdapter;
13use crate::register_kernel;
14use crate::vtable::ValidityHelper;
15
16impl MaskKernel for StructVTable {
17    fn mask(&self, array: &StructArray, filter_mask: &Mask) -> VortexResult<ArrayRef> {
18        let validity = array.validity().mask(filter_mask);
19
20        StructArray::try_new_with_dtype(
21            array.fields().clone(),
22            array.struct_fields().clone(),
23            array.len(),
24            validity,
25        )
26        .map(|a| a.into_array())
27    }
28}
29register_kernel!(MaskKernelAdapter(StructVTable).lift());