Skip to main content

vortex_array/arrays/struct_/vtable/
operations.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_error::VortexResult;
5
6use crate::Array;
7use crate::arrays::struct_::StructArray;
8use crate::arrays::struct_::StructVTable;
9use crate::scalar::Scalar;
10use crate::vtable::OperationsVTable;
11
12impl OperationsVTable<StructVTable> for StructVTable {
13    fn scalar_at(array: &StructArray, index: usize) -> VortexResult<Scalar> {
14        let field_scalars: VortexResult<Vec<_>> = array
15            .unmasked_fields()
16            .iter()
17            .map(|field| field.scalar_at(index))
18            .collect();
19        Ok(Scalar::struct_(array.dtype().clone(), field_scalars?))
20    }
21}