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