24 releases (13 stable)
| 2.3.1 | Nov 26, 2025 |
|---|---|
| 2.1.0 | Sep 15, 2025 |
| 2.0.1 | Feb 28, 2025 |
| 1.3.3 | Mar 31, 2025 |
| 0.0.1 | Apr 19, 2015 |
#3 in Value formatting
4,407,766 downloads per month
Used in 1,193 crates
(377 directly)
45KB
1K
SLoC
ByteSize
ByteSize is a semantic wrapper for byte count representations.
Features:
- Pre-defined constants for various size units (e.g., B, Kb, Kib, Mb, Mib, Gb, Gib, ... PB).
ByteSizetype which presents size units convertible to different size units.- Arithmetic operations for
ByteSize. FromStrimpl forByteSize, allowing for parsing string size representations like "1.5KiB" and "521TiB".- Serde support for binary and human-readable deserializers like JSON.
Examples
Construction using SI or IEC helpers.
use bytesize::ByteSize;
assert!(ByteSize::kib(4) > ByteSize::kb(4));
Display as human-readable string.
use bytesize::ByteSize;
assert_eq!("518.0 GiB", ByteSize::gib(518).display().iec().to_string());
assert_eq!("556.2 GB", ByteSize::gib(518).display().si().to_string());
assert_eq!("518.0G", ByteSize::gib(518).display().iec_short().to_string());
Arithmetic operations are supported.
use bytesize::ByteSize;
let plus = ByteSize::mb(1) + ByteSize::kb(100);
println!("{plus}");
let minus = ByteSize::tb(1) - ByteSize::gb(4);
assert_eq!(ByteSize::gb(996), minus);
Dependencies
~140KB