alloc_test/perf/
compare.rs1use derive_builder::Builder;
2use thiserror::Error;
3
4use crate::threshold::{Threshold, ThresholdError, ThresholdFor};
5
6use super::measure::PerfStats;
7
8#[derive(Debug, Builder)]
9pub struct PerfThresholds {
10 pub mean: Threshold<u64>,
11}
12
13#[derive(Debug, Error)]
14#[error("Performance parameter `{param}`: {error}")]
15pub struct PerfThresholdsError {
16 error: ThresholdError<u64>,
17 param: &'static str,
18}
19
20impl ThresholdFor<PerfStats> for PerfThresholds {
21 type Error = PerfThresholdsError;
22
23 fn check_threshold(&self, value: &PerfStats, ref_value: &PerfStats) -> Result<(), Self::Error> {
24 self.mean
25 .check(&value.mean, &ref_value.mean)
26 .map_err(|error| PerfThresholdsError {
27 error,
28 param: "mean",
29 })
30 }
31}