vortex_array/arrays/varbinview/compute/
mask.rs

1use vortex_error::VortexResult;
2use vortex_mask::Mask;
3
4use crate::arrays::{VarBinViewArray, VarBinViewVTable};
5use crate::compute::{MaskKernel, MaskKernelAdapter};
6use crate::vtable::ValidityHelper;
7use crate::{ArrayRef, IntoArray, register_kernel};
8
9impl MaskKernel for VarBinViewVTable {
10    fn mask(&self, array: &VarBinViewArray, mask: &Mask) -> VortexResult<ArrayRef> {
11        Ok(VarBinViewArray::try_new(
12            array.views().clone(),
13            array.buffers().to_vec(),
14            array.dtype().as_nullable(),
15            array.validity().mask(mask)?,
16        )?
17        .into_array())
18    }
19}
20
21register_kernel!(MaskKernelAdapter(VarBinViewVTable).lift());
22
23#[cfg(test)]
24mod tests {
25    use crate::arrays::VarBinViewArray;
26    use crate::compute::conformance::mask::test_mask;
27
28    #[test]
29    fn take_mask_var_bin_view_array() {
30        test_mask(VarBinViewArray::from_iter_str(["one", "two", "three", "four", "five"]).as_ref());
31
32        test_mask(
33            VarBinViewArray::from_iter_nullable_str([
34                Some("one"),
35                None,
36                Some("three"),
37                Some("four"),
38                Some("five"),
39            ])
40            .as_ref(),
41        );
42    }
43}