1use vortex_array::arrays::varbin_scalar;
5use vortex_array::scalar::Scalar;
6use vortex_array::vtable::OperationsVTable;
7use vortex_buffer::ByteBuffer;
8use vortex_error::VortexExpect;
9use vortex_error::VortexResult;
10
11use crate::FSSTArray;
12use crate::FSSTVTable;
13
14impl OperationsVTable<FSSTVTable> for FSSTVTable {
15 fn scalar_at(array: &FSSTArray, index: usize) -> VortexResult<Scalar> {
16 let compressed = array.codes().scalar_at(index)?;
17 let binary_datum = compressed.as_binary().value().vortex_expect("non-null");
18
19 let decoded_buffer = ByteBuffer::from(array.decompressor().decompress(binary_datum));
20 Ok(varbin_scalar(decoded_buffer, array.dtype()))
21 }
22}