8 releases (stable)

1.0.6 Apr 8, 2024
1.0.5 Mar 27, 2023
1.0.4 Mar 23, 2023
1.0.3 Mar 22, 2023
0.1.0 Mar 22, 2023

#62 in Value formatting

Download history 12/week @ 2024-01-14 22/week @ 2024-01-21 38/week @ 2024-02-04 1/week @ 2024-02-11 3/week @ 2024-02-18 11/week @ 2024-02-25 40/week @ 2024-03-03 83/week @ 2024-03-10 42/week @ 2024-03-17 18/week @ 2024-03-24 21/week @ 2024-03-31 168/week @ 2024-04-07 50/week @ 2024-04-14 6/week @ 2024-04-21

251 downloads per month
Used in pastes

MIT/Apache

12KB
139 lines

CI Crate

Humanize Bytes

Create a human-readable string representation of a number of bytes either in binary or decimal units (SI or IEC).

https://en.wikipedia.org/wiki/Binary_prefix

1 KB = 1000 B 1 KiB = 1024 B

use humanize_bytes::{humanize_bytes_decimal, humanize_bytes_binary, humanize_quantity};
 
assert_eq!(humanize_bytes_binary!(0), "0 B");
assert_eq!(humanize_bytes_binary!(512), "512 B");
assert_eq!(humanize_bytes_binary!(1023), "1023 B");
assert_eq!(humanize_bytes_binary!(1024), "1 KiB");
assert_eq!(humanize_bytes_binary!(1024 + 99), "1 KiB");
assert_eq!(humanize_bytes_binary!(1024 + 103), "1.1 KiB");
assert_eq!(humanize_bytes_binary!(1024 * 1024 - 1), "1023.9 KiB");
assert_eq!(humanize_bytes_binary!(1024 * 1024), "1 MiB");
assert_eq!(humanize_bytes_binary!(1024 * 1024 * 1024), "1 GiB");

assert_eq!(humanize_bytes_decimal!(0), "0 B");
assert_eq!(humanize_bytes_decimal!(512), "512 B");
assert_eq!(humanize_bytes_decimal!(999), "999 B");
assert_eq!(humanize_bytes_decimal!(1000), "1 kB");
assert_eq!(humanize_bytes_decimal!(1000 + 99), "1 kB");
assert_eq!(humanize_bytes_decimal!(1000 + 100), "1.1 kB");
assert_eq!(humanize_bytes_decimal!(1000 * 1000 - 1), "999.9 kB");
assert_eq!(humanize_bytes_decimal!(1000 * 1000), "1 MB");
assert_eq!(humanize_bytes_decimal!(1000 * 1000 * 1000), "1 GB");

assert_eq!(humanize_quantity!(0), "0");
assert_eq!(humanize_quantity!(512), "512");
assert_eq!(humanize_quantity!(999), "999");
assert_eq!(humanize_quantity!(1000), "1 k");
assert_eq!(humanize_quantity!(1000 + 99), "1 k");
assert_eq!(humanize_quantity!(1000 + 100), "1.1 k");
assert_eq!(humanize_quantity!(1000 * 1000 - 1), "999.9 k");
assert_eq!(humanize_quantity!(1000 * 1000), "1 M");

Implementation Details

This crate has one dependency, smartstring, and does not allocate because all formatting fits within the MAX_INLINE limit for a SmartString<LazyCompact>. Both macros return a SmartString<LazyCompact>, which looks/feels just like a normal String.

Dependencies

~135KB