macro_rules! print_struct {
($args:ident, $struc:expr) => {{
info!("{}", if $args.is_present("json") {
serde_json::to_string($struc)?
} else {
$struc.to_string()
})
}}
}
pub fn duration_to_hms(d: std::time::Duration) -> String {
let mut s = String::new();
const SECS_IN_MIN: u64 = 60;
const MINS_IN_HOUR: u64 = 60;
const SECS_IN_HOUR: u64 = SECS_IN_MIN * MINS_IN_HOUR;
let hours = d.as_secs() / SECS_IN_HOUR;
if hours > 0 {
s.push_str(&format!("{:02}:", hours));
}
s.push_str(&format!("{:02}:", d.as_secs() % SECS_IN_HOUR / SECS_IN_MIN));
s.push_str(&format!("{:02}", d.as_secs() % SECS_IN_MIN));
s
}
pub fn setup_logger() -> Result<(), fern::InitError> {
fern::Dispatch::new()
.format(|out, message, _record| {
out.finish(format_args!(
"{}",
message
))
})
.level(log::LevelFilter::Info)
.chain(std::io::stdout())
.apply()?;
Ok(())
}