pub fn format_size(bytes: u64) -> String {
let kib = 1024.0;
let mib = kib * 1024.0;
let gib = mib * 1024.0;
let tib = gib * 1024.0;
let bytes_f = bytes as f64;
if bytes_f >= tib {
format!("{:.1} TB", bytes_f / tib)
} else if bytes_f >= gib {
format!("{:.1} GB", bytes_f / gib)
} else if bytes_f >= mib {
format!("{:.1} MB", bytes_f / mib)
} else if bytes_f >= kib {
format!("{:.1} KB", bytes_f / kib)
} else {
format!("{} B", bytes)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn format_size_test() {
assert_eq!(format_size(1024), "1.0 KB");
assert_eq!(format_size(315), "315 B");
assert_eq!(format_size(781542611), "745.3 MB");
}
}