ByteSize is a semantic wrapper for byte count representations.
Features:
- Pre-defined constants for various size units (e.g., B, KB, KiB, MB, MiB, ... EB, EiB).
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.
std(default): Enables theallocfeature and standard library optimizations.alloc: Enables parsing and formatting.arbitrary: Implementsarbitrary::Arbitraryfor [ByteSize].serde: Enablesallocand implements serialization and deserialization for [ByteSize].
Disable the default features to use only the core data types, conversions, and constants.
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());
assert_eq!("4.0 Kib", ByteSize::b(512).display().iec_bits().to_string());
assert_eq!("4.1 kb", ByteSize::b(512).display().si_bits().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);