vortex_array/arrays/varbin/compute/
mask.rs

1use vortex_error::VortexResult;
2use vortex_mask::Mask;
3
4use crate::arrays::VarBinEncoding;
5use crate::arrays::varbin::VarBinArray;
6use crate::compute::MaskFn;
7use crate::{Array, ArrayRef};
8
9impl MaskFn<&VarBinArray> for VarBinEncoding {
10    fn mask(&self, array: &VarBinArray, mask: Mask) -> VortexResult<ArrayRef> {
11        Ok(VarBinArray::try_new(
12            array.offsets().clone(),
13            array.bytes().clone(),
14            array.dtype().as_nullable(),
15            array.validity().mask(&mask)?,
16        )?
17        .into_array())
18    }
19}
20
21#[cfg(test)]
22mod test {
23    use vortex_dtype::{DType, Nullability};
24
25    use crate::arrays::VarBinArray;
26    use crate::compute::test_harness::test_mask;
27
28    #[test]
29    fn test_mask_var_bin_array() {
30        let array = VarBinArray::from_vec(
31            vec!["hello", "world", "filter", "good", "bye"],
32            DType::Utf8(Nullability::NonNullable),
33        );
34        test_mask(&array);
35
36        let array = VarBinArray::from_iter(
37            vec![Some("hello"), None, Some("filter"), Some("good"), None],
38            DType::Utf8(Nullability::Nullable),
39        );
40        test_mask(&array);
41    }
42}