use super::Metric;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum DuplicateCriteria {
Strict,
Different,
Incompatible,
}
#[derive(Clone, Debug)]
pub enum DuplicateReaction {
Error,
Rename { suffix: String },
}
pub(super) fn are_compatible(m1: &Metric, m2: &Metric) -> bool {
m1.name == m2.name && m1.unit == m2.unit && m1.value_type == m2.value_type
}
pub(super) fn are_identical(m1: &Metric, m2: &Metric) -> bool {
are_compatible(m1, m2) && m1.description == m2.description
}
impl DuplicateCriteria {
pub fn are_duplicate(self, m1: &Metric, m2: &Metric) -> bool {
match self {
DuplicateCriteria::Strict => m1.name == m2.name,
DuplicateCriteria::Different => !are_identical(m1, m2),
DuplicateCriteria::Incompatible => !are_compatible(m1, m2),
}
}
}