cargo_e/
e_fmt.rs

1use std::time::Duration;
2
3pub fn format_duration(duration: Duration) -> String {
4    let secs = duration.as_secs();
5    let millis = duration.subsec_millis();
6    let hours = secs / 3600;
7    let minutes = (secs % 3600) / 60;
8    let seconds = secs % 60;
9    if hours > 0 {
10        format!("{:02}:{:02}:{:02}.{:03}", hours, minutes, seconds, millis)
11    } else if minutes > 0 {
12        format!("{:02}:{:02}.{:03}", minutes, seconds, millis)
13    } else {
14        format!("{:02}.{:03}", seconds, millis)
15    }
16}
17/// Helper: Format a Duration in a humanedable way.
18pub fn format_duration_secs(d: Duration) -> String {
19    let secs = d.as_secs();
20    let millis = d.subsec_millis();
21    format!("{}.{:03} secs", secs, millis)
22}
23
24/// Helper: Format a byte count in humanedable form.
25pub fn format_bytes(bytes: usize) -> String {
26    if bytes < 1024 {
27        format!("{} B", bytes)
28    } else if bytes < 1024 * 1024 {
29        format!("{:.2} KB", bytes as f64 / 1024.0)
30    } else if bytes < 1024 * 1024 * 1024 {
31        format!("{:.2} MB", bytes as f64 / (1024.0 * 1024.0))
32    } else {
33        format!("{:.2} GB", bytes as f64 / (1024.0 * 1024.0 * 1024.0))
34    }
35}