vortex_array/arrays/varbin/compute/
is_constant.rs

1use vortex_error::VortexResult;
2
3use crate::accessor::ArrayAccessor;
4use crate::arrays::{VarBinArray, VarBinEncoding};
5use crate::compute::{IsConstantFn, IsConstantOpts};
6
7impl IsConstantFn<&VarBinArray> for VarBinEncoding {
8    fn is_constant(
9        &self,
10        array: &VarBinArray,
11        _opts: &IsConstantOpts,
12    ) -> VortexResult<Option<bool>> {
13        array.with_iterator(compute_is_constant).map(Some)
14    }
15}
16
17pub(super) fn compute_is_constant(iter: &mut dyn Iterator<Item = Option<&[u8]>>) -> bool {
18    let Some(first_value) = iter.next() else {
19        return false;
20    };
21    for v in iter {
22        if v != first_value {
23            return false;
24        }
25    }
26    true
27}