use std::fmt;
use std::time::Duration;
use tower_http::LatencyUnit;
pub const STARTED_ON: &str = "Started on";
pub struct Latency {
unit: LatencyUnit,
duration: Duration,
}
impl Latency {
#[must_use]
pub fn new(unit: LatencyUnit, duration: Duration) -> Self {
Self { unit, duration }
}
}
impl fmt::Display for Latency {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.unit {
LatencyUnit::Seconds => write!(f, "{} s", self.duration.as_secs_f64()),
LatencyUnit::Millis => write!(f, "{} ms", self.duration.as_millis()),
LatencyUnit::Micros => write!(f, "{} μs", self.duration.as_micros()),
LatencyUnit::Nanos => write!(f, "{} ns", self.duration.as_nanos()),
_ => panic!("Invalid latency unit"),
}
}
}