vortex_array/array/
statistics.rs1use vortex_scalar::Scalar;
2
3use crate::Array;
4use crate::compute::{Cost, IsConstantOpts, is_constant_opts};
5
6impl dyn Array {
7 pub fn is_constant(&self) -> bool {
8 let opts = IsConstantOpts {
9 cost: Cost::Specialized,
10 };
11 is_constant_opts(self, &opts)
12 .inspect_err(|e| log::warn!("Failed to compute IsConstant: {e}"))
13 .ok()
14 .flatten()
15 .unwrap_or_default()
16 }
17
18 pub fn is_constant_opts(&self, cost: Cost) -> bool {
19 let opts = IsConstantOpts { cost };
20 is_constant_opts(self, &opts)
21 .inspect_err(|e| log::warn!("Failed to compute IsConstant: {e}"))
22 .ok()
23 .flatten()
24 .unwrap_or_default()
25 }
26
27 pub fn as_constant(&self) -> Option<Scalar> {
28 self.is_constant().then(|| self.scalar_at(0).ok()).flatten()
29 }
30}