vortex_array/vtable/
statistics.rs1use vortex_error::{VortexExpect, VortexResult};
2
3use crate::Array;
4use crate::encoding::Encoding;
5use crate::stats::{Stat, StatsSet};
6
7pub trait StatisticsVTable<A> {
9 fn compute_statistics(&self, _array: A, _stat: Stat) -> VortexResult<StatsSet> {
11 Ok(StatsSet::default())
12 }
13}
14
15impl<'a, E: Encoding> StatisticsVTable<&'a dyn Array> for E
16where
17 E: StatisticsVTable<&'a E::Array>,
18{
19 fn compute_statistics(&self, array: &'a dyn Array, stat: Stat) -> VortexResult<StatsSet> {
20 let array_ref = array
21 .as_any()
22 .downcast_ref::<E::Array>()
23 .vortex_expect("Failed to downcast array");
24 StatisticsVTable::compute_statistics(self, array_ref, stat)
25 }
26}