vortex_array/arrays/constant/
encode.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_error::VortexResult;
5
6use crate::Canonical;
7use crate::arrays::{ConstantArray, ConstantEncoding, ConstantVTable};
8use crate::vtable::EncodeVTable;
9
10impl EncodeVTable<ConstantVTable> for ConstantVTable {
11    fn encode(
12        _encoding: &ConstantEncoding,
13        canonical: &Canonical,
14        _like: Option<&ConstantArray>,
15    ) -> VortexResult<Option<ConstantArray>> {
16        let canonical = canonical.as_ref();
17        if canonical.is_constant() {
18            let scalar = canonical.scalar_at(0)?;
19            Ok(Some(ConstantArray::new(scalar, canonical.len())))
20        } else {
21            Ok(None)
22        }
23    }
24}