vortex_array/arrays/varbinview/compute/
optimize.rs

1use vortex_error::VortexResult;
2
3use crate::accessor::ArrayAccessor;
4use crate::arrays::{VarBinViewArray, VarBinViewEncoding};
5use crate::builders::{ArrayBuilder, VarBinViewBuilder};
6use crate::compute::OptimizeFn;
7use crate::{Array, ArrayRef};
8
9impl OptimizeFn<&VarBinViewArray> for VarBinViewEncoding {
10    fn optimize(&self, array: &VarBinViewArray) -> VortexResult<ArrayRef> {
11        let mut builder = VarBinViewBuilder::with_capacity(array.dtype().clone(), array.len());
12
13        array.with_iterator(|iter| {
14            for item in iter {
15                builder.append_option(item);
16            }
17        })?;
18
19        Ok(builder.finish())
20    }
21}