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
```rust use humanbytesize::{humanizebytesdecimal, humanizebytesbinary};
println!("{}", humanizebytesbinary!(0)); // 0 B println!("{}", humanizebytesbinary!(512)); // 512 B println!("{}", humanizebytesbinary!(1023)); // 1023 B println!("{}", humanizebytesbinary!(1024)); // 1 KiB println!("{}", humanizebytesbinary!(1024 + 99)); // 1 KiB println!("{}", humanizebytesbinary!(1024 + 103)); // 1.1 KiB println!("{}", humanizebytesbinary!(1024 * 1024 - 1)); // 1023.9 kB println!("{}", humanizebytesbinary!(1024 * 1024)); // 1 MB
println!("{}", humanizebytesdecimal!(0)); // 0 B println!("{}", humanizebytesdecimal!(512)); // 512 B println!("{}", humanizebytesdecimal!(999)); // 999 B println!("{}", humanizebytesdecimal!(1000)); // 1 kB println!("{}", humanizebytesdecimal!(1000 + 99)); // 1 kB println!("{}", humanizebytesdecimal!(1000 + 100)); // 1.1 kB println!("{}", humanizebytesdecimal!(1000 * 1000 - 1)); // 999.9 kB println!("{}", humanizebytesdecimal!(1000 * 1000)); // 1 MB ```
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
.