use crate::metrics::{
def::{Metric, RawMetricId},
registry::MetricRegistry,
};
use super::Transform;
pub trait TransformBuilder: FnOnce(&mut dyn TransformBuildContext) -> anyhow::Result<Box<dyn Transform>> {}
impl<F> TransformBuilder for F where F: FnOnce(&mut dyn TransformBuildContext) -> anyhow::Result<Box<dyn Transform>> {}
pub(super) struct BuildContext<'a> {
pub(super) metrics: &'a MetricRegistry,
}
pub trait TransformBuildContext {
fn metric_by_name(&self, name: &str) -> Option<(RawMetricId, &Metric)>;
}
impl TransformBuildContext for BuildContext<'_> {
fn metric_by_name(&self, name: &str) -> Option<(RawMetricId, &Metric)> {
self.metrics.by_name(name)
}
}