1use std::time::Duration;
4
5pub const MIN_SECONDS_ONLY_TIME: Duration = Duration::from_secs(5);
7
8pub const MIN_MS_ONLY_TIME: Duration = Duration::from_millis(5);
10
11pub fn duration_short(duration: impl Into<Duration>) -> String {
13 let duration = duration.into();
14
15 if duration >= MIN_SECONDS_ONLY_TIME {
16 humantime_seconds(duration)
17 } else if duration >= MIN_MS_ONLY_TIME {
18 humantime_milliseconds(duration)
19 } else {
20 humantime_microseconds(duration)
21 }
22}
23
24pub fn humantime_seconds(duration: impl Into<Duration>) -> String {
28 let duration = duration.into();
29
30 let duration = Duration::from_secs(duration.as_secs());
32
33 let duration = humantime::format_duration(duration);
34
35 format!("{duration}")
36}
37
38pub fn humantime_milliseconds(duration: impl Into<Duration>) -> String {
40 let duration = duration.into();
41
42 let duration_secs = Duration::from_secs(duration.as_secs());
44 let duration_millis = Duration::from_millis(duration.subsec_millis().into());
45
46 let duration = humantime::format_duration(duration_secs + duration_millis);
47
48 format!("{duration}")
49}
50
51pub fn humantime_microseconds(duration: impl Into<Duration>) -> String {
53 let duration = duration.into();
54
55 let duration_secs = Duration::from_secs(duration.as_secs());
57 let duration_millis = Duration::from_millis(duration.subsec_millis().into());
58 let duration_micros = Duration::from_micros(duration.subsec_micros().into());
59
60 let duration = humantime::format_duration(duration_secs + duration_millis + duration_micros);
61
62 format!("{duration}")
63}