• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vortex-data / vortex / 16811137738

07 Aug 2025 05:13PM UTC coverage: 85.139% (+0.3%) from 84.847%
16811137738

Pull #4152

github

web-flow
Merge e081c672c into 30635faae
Pull Request #4152: ScalarValue operations must go via Scalar

375 of 392 new or added lines in 23 files covered. (95.66%)

22 existing lines in 9 files now uncovered.

50960 of 59855 relevant lines covered (85.14%)

565634.41 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

11.54
/vortex-array/src/stats/provider.rs
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3

4
use vortex_error::{VortexError, vortex_panic};
5
use vortex_scalar::Scalar;
6

7
use super::{Precision, Stat, StatType};
8

9
pub trait StatsProvider {
10
    fn get(&self, stat: Stat) -> Option<Precision<Scalar>>;
11

12
    /// Count of stored stats with known values.
13
    fn len(&self) -> usize;
14

15
    /// Predicate equivalent to a [len][Self::len] of zero.
16
    fn is_empty(&self) -> bool {
×
17
        self.len() == 0
×
18
    }
×
19
}
20

21
impl<S> StatsProviderExt for S where S: StatsProvider {}
22

23
pub trait StatsProviderExt: StatsProvider {
24
    fn get_scalar_bound<S: StatType<Scalar>>(&self) -> Option<S::Bound> {
1,668✔
25
        self.get(S::STAT).map(|v| v.bound::<S>())
1,668✔
26
    }
1,668✔
27

NEW
28
    fn get_as<T: for<'a> TryFrom<&'a Scalar, Error = VortexError>>(
×
29
        &self,
×
30
        stat: Stat,
×
31
    ) -> Option<Precision<T>> {
×
32
        self.get(stat).map(|v| {
×
33
            v.map(|v| {
×
34
                T::try_from(&v).unwrap_or_else(|err| {
×
35
                    vortex_panic!(
×
36
                        err,
×
37
                        "Failed to get stat {} as {}",
×
38
                        stat,
39
                        std::any::type_name::<T>()
×
40
                    )
41
                })
42
            })
×
43
        })
×
44
    }
×
45

46
    fn get_as_bound<S, U>(&self) -> Option<S::Bound>
×
47
    where
×
48
        S: StatType<U>,
×
NEW
49
        U: for<'a> TryFrom<&'a Scalar, Error = VortexError>,
×
50
    {
51
        self.get_as::<U>(S::STAT).map(|v| v.bound::<S>())
×
52
    }
×
53
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc