///|
/// A single Prometheus label pair.
pub(all) struct Label {
name : String
value : String
} derive(Debug, Eq, Hash)
///|
/// Errors shared by metric constructors and update operations.
pub(all) suberror MetricError {
InvalidName(String)
InvalidLabelName(String)
DuplicateLabelName(String)
ReservedLabelName(String)
InvalidHelp(String)
InvalidUnit(String)
NegativeCounterDelta(Double)
NonFiniteCounterDelta(Double)
InvalidBucketOrder
InvalidBucketBoundary(Double)
NonFiniteObservation
} derive(Debug, Eq)
///|
pub fn validate_metric_name(name : String) -> Unit raise MetricError {
if !is_valid_metric_name(name) {
raise InvalidName(name)
}
}
///|
pub fn validate_help(help : String) -> Unit raise MetricError {
if help.contains("\n") || help.contains("\r") {
raise InvalidHelp("HELP text cannot contain a line break")
}
}
///|
pub fn validate_unit(unit : String) -> Unit raise MetricError {
if !is_valid_identifier(unit, false) {
raise InvalidUnit(unit)
}
}