use crate::component::Namespace;
use crate::metrics::{MetricsHierarchy, MetricsRegistry};
impl MetricsHierarchy for Namespace {
fn basename(&self) -> String {
self.name.clone()
}
fn parent_hierarchies(&self) -> Vec<&dyn MetricsHierarchy> {
let mut parents = vec![];
let parent_chain: Vec<&Namespace> =
std::iter::successors(self.parent.as_deref(), |ns| ns.parent.as_deref()).collect();
parents.push(&*self.runtime as &dyn MetricsHierarchy);
for parent_ns in parent_chain.iter().rev() {
parents.push(*parent_ns as &dyn MetricsHierarchy);
}
parents
}
fn get_metrics_registry(&self) -> &MetricsRegistry {
&self.metrics_registry
}
}