vortex_array/arrays/constant/vtable/
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;
8use crate::arrays::ConstantVTable;
9use crate::vtable::EncodeVTable;
10
11impl EncodeVTable<ConstantVTable> for ConstantVTable {
12    fn encode(
13        _vtable: &ConstantVTable,
14        canonical: &Canonical,
15        _like: Option<&ConstantArray>,
16    ) -> VortexResult<Option<ConstantArray>> {
17        let canonical = canonical.as_ref();
18        if canonical.is_constant() {
19            let scalar = canonical.scalar_at(0);
20            Ok(Some(ConstantArray::new(scalar, canonical.len())))
21        } else {
22            Ok(None)
23        }
24    }
25}