diff --git a/src/installer.rs b/src/installer.rs index db2697213b..bd3253ec4c 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -856,31 +856,4 @@ pub fn install(config: Config, output: impl AsRef) -> Result<()> { install_inner(config, output.as_ref()) } -/// Convert bytes into readable string -pub fn format_bytes(len: u64) -> String { - const GB: u64 = 1024 * 1024 * 1024; - const MB: u64 = 1024 * 1024; - const KB: u64 = 1024; - - if len > GB { - format_bytes_inner(len, GB, "GB") - } else if len > MB { - format_bytes_inner(len, MB, "MB") - } else if len > KB { - format_bytes_inner(len, KB, "KB") - } else { - format!("{len} B") - } -} - -fn format_bytes_inner(len: u64, divisor: u64, suffix: &'static str) -> String { - let mut s = format!("{}", len / divisor); - if s.len() == 1 { - let _ = write!(s, ".{:02}", (len % divisor) / (divisor / 100)); - } else if s.len() == 2 { - let _ = write!(s, ".{:01}", (len % divisor) / (divisor / 10)); - } - - let _ = write!(s, " {suffix}"); - s -} +pub use crate::format_bytes; diff --git a/src/lib.rs b/src/lib.rs index 216478d901..5bc8a002de 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,3 +12,32 @@ pub use crate::installer::*; pub use crate::config::file::FileConfig; pub use crate::config::package::PackageConfig; pub use crate::config::Config; + +use core::fmt::Write as _; + +pub fn format_bytes(len: u64) -> String { + const GB: u64 = 1024 * 1024 * 1024; + const MB: u64 = 1024 * 1024; + const KB: u64 = 1024; + + fn inner(len: u64, divisor: u64, suffix: &str) -> String { + let mut s = format!("{}", len / divisor); + if s.len() == 1 { + let _ = write!(s, ".{:02}", (len % divisor) / (divisor / 100)); + } else if s.len() == 2 { + let _ = write!(s, ".{:01}", (len % divisor) / (divisor / 10)); + } + let _ = write!(s, " {suffix}"); + s + } + + if len > GB { + inner(len, GB, "GB") + } else if len > MB { + inner(len, MB, "MB") + } else if len > KB { + inner(len, KB, "KB") + } else { + format!("{len} B") + } +}