osm_lump_ways/
formatting.rs1pub 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}