#human-readable #byte #utility

no-std bytesize

Semantic wrapper for byte count representations

19 releases (8 stable)

2.0.1 Feb 28, 2025
1.3.2 Feb 11, 2025
1.3.0 Aug 23, 2023
1.2.0 Feb 24, 2023
0.0.1 Apr 19, 2015

#1 in Value formatting

Download history 227642/week @ 2024-11-22 268658/week @ 2024-11-29 282512/week @ 2024-12-06 280295/week @ 2024-12-13 152905/week @ 2024-12-20 147425/week @ 2024-12-27 259219/week @ 2025-01-03 324969/week @ 2025-01-10 286330/week @ 2025-01-17 306004/week @ 2025-01-24 338754/week @ 2025-01-31 374979/week @ 2025-02-07 335870/week @ 2025-02-14 373663/week @ 2025-02-21 372036/week @ 2025-02-28 327677/week @ 2025-03-07

1,466,386 downloads per month
Used in 856 crates (271 directly)

Apache-2.0

38KB
892 lines

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);

Dependencies

~185KB