use core::fmt::Display;
use unit_prefix::NumberPrefix;
fn main() {
let mut n = 1_f64;
for _ in 0..8 {
n *= 1000_f64;
let decimal = format_prefix(NumberPrefix::decimal(n));
let binary = format_prefix(NumberPrefix::binary(n));
println!("{:26} bytes is {} and {:10}", n, decimal, binary);
}
println!();
let mut n = 1_f64;
for _ in 0..8 {
n *= 1024_f64;
let decimal = format_prefix(NumberPrefix::decimal(n));
let binary = format_prefix(NumberPrefix::binary(n));
println!("{:26} bytes is {} and {:10}", n, binary, decimal);
}
}
fn format_prefix<T: Display>(np: NumberPrefix<T>) -> String {
match np {
NumberPrefix::Prefixed(prefix, n) => format!("{:.3} {}B", n, prefix),
NumberPrefix::Standalone(bytes) => format!("{} bytes", bytes),
}
}