use std::time::Instant;
#[cfg(test)]
const TARGET: &str = "liminal::boot";
pub fn finished(name: &'static str, started: Instant) {
tracing::info!(
target: "liminal::boot",
step = "boot_step",
name,
elapsed_ms = u64::try_from(started.elapsed().as_millis()).unwrap_or(u64::MAX),
"boot step finished"
);
}
pub fn timed<T>(name: &'static str, work: impl FnOnce() -> T) -> T {
let started = Instant::now();
let answer = work();
finished(name, started);
answer
}
pub fn stop_finished(name: &'static str, started: Instant) {
tracing::info!(
target: "liminal::boot",
step = "shutdown_step",
name,
elapsed_ms = u64::try_from(started.elapsed().as_millis()).unwrap_or(u64::MAX),
"shutdown step finished"
);
}
pub fn stop_timed<T>(name: &'static str, work: impl FnOnce() -> T) -> T {
let started = Instant::now();
let answer = work();
stop_finished(name, started);
answer
}
#[cfg(test)]
#[path = "boot_steps_tests.rs"]
mod tests;