use std::error::Error; use function_timer::time; use metrics_exporter_prometheus::PrometheusBuilder; struct Test {} impl Test { #[time("my_metric")] pub fn impl_function(&self) { println!("This another test"); } #[time("another_metric")] pub fn impl_fail_function(&self, text: &str) -> Result<(), Box> { let number: usize = text.parse()?; println!("{number}"); Ok(()) } #[time("my_metric")] pub fn static_function() { println!("This another test"); } } #[time("my_metric")] pub fn free_function() { println!("This a test"); } fn main() -> Result<(), Box> { let builder = PrometheusBuilder::new(); let handle = builder.install_recorder()?; free_function(); Test::static_function(); let t = Test {}; t.impl_function(); let result = t.impl_fail_function("azerty"); assert!(result.is_err()); let result = t.impl_fail_function("1"); assert!(result.is_ok()); println!("{}", handle.render()); Ok(()) }