Skip to content

Semantic wrapper for byte count representations

License

Notifications You must be signed in to change notification settings

bytesize-rs/bytesize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7467a23 · Mar 13, 2025
Feb 23, 2025
Feb 24, 2025
Feb 28, 2025
Feb 19, 2025
Mar 13, 2025
Feb 9, 2025
Feb 10, 2025
Feb 28, 2025
Feb 28, 2025
Feb 28, 2025
Apr 19, 2015
Feb 28, 2025
Feb 9, 2025
Feb 23, 2025

Repository files navigation

ByteSize

crates.io Documentation Version Apache 2.0 licensed
Dependency Status Download

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).
  • ByteSize type which presents size units convertible to different size units.
  • Arithmetic operations for ByteSize.
  • FromStr impl for ByteSize, 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);