use std::fmt;
use crate::measurement::WrappedMeasurementType;
use super::duplicate::DuplicateCriteria;
#[derive(Debug, Clone)]
pub struct MetricCreationError {
pub name: String,
pub criteria: DuplicateCriteria,
}
impl std::error::Error for MetricCreationError {}
impl fmt::Display for MetricCreationError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "This metric has already been registered: {}", self.name)
}
}
#[derive(Debug)]
pub struct MetricTypeError {
pub(super) expected: WrappedMeasurementType,
pub(super) actual: WrappedMeasurementType,
}
impl std::error::Error for MetricTypeError {}
impl std::fmt::Display for MetricTypeError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"Incompatible metric type: expected {} but was {}",
self.expected, self.actual
)
}
}