osm_lump_ways/
formatting.rs

1pub fn format_duration_human(duration: &std::time::Duration) -> String {
2    let sec_f = duration.as_secs_f32();
3    if sec_f < 60. {
4        let msec = (sec_f * 1000.).round() as u64;
5        if sec_f > 0. && msec == 0 {
6            "<1ms".to_string()
7        } else if msec > 0 && duration.as_secs_f32() < 1. {
8            format!("{}ms", msec)
9        } else {
10            format!("{:>3.1}s", sec_f)
11        }
12    } else {
13        let sec = sec_f.round() as u64;
14        let (min, sec) = (sec / 60, sec % 60);
15        if min < 60 {
16            format!("{}m{:02}s", min, sec)
17        } else {
18            let (hr, min) = (min / 60, min % 60);
19            if hr < 24 {
20                format!("{}h{:02}m{:02}s", hr, min, sec)
21            } else {
22                let (day, hr) = (hr / 24, hr % 24);
23                format!("{}d{:02}h{:02}m{:02}s", day, hr, min, sec)
24            }
25        }
26    }
27}
28
29pub fn format_duration(d: std::time::Duration) -> String {
30    if d.as_secs_f32() < 60. {
31        format!("{:>.1}sec", d.as_secs_f32())
32    } else {
33        format!(
34            "{} ( {:>.1}sec )",
35            format_duration_human(&d),
36            d.as_secs_f32()
37        )
38    }
39}