vortex_array/arrays/list/vtable/
operations.rs1use std::sync::Arc;
5
6use vortex_error::VortexResult;
7
8use crate::ExecutionCtx;
9use crate::arrays::List;
10use crate::arrays::list::vtable::ListArray;
11use crate::scalar::Scalar;
12use crate::vtable::OperationsVTable;
13
14impl OperationsVTable<List> for List {
15 fn scalar_at(array: &ListArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult<Scalar> {
16 let elems = array.list_elements_at(index)?;
18 let scalars: Vec<Scalar> = (0..elems.len())
19 .map(|i| elems.scalar_at(i))
20 .collect::<VortexResult<_>>()?;
21
22 Ok(Scalar::list(
23 Arc::new(elems.dtype().clone()),
24 scalars,
25 array.dtype().nullability(),
26 ))
27 }
28}