Skip to main content

Crate bsize

Crate bsize 

Source
Expand description

BSize provides multiple semantic wrappers and utilities for byte size representations.

§Features

  • #![no_std]-capable, no dependencies, and uses no heap allocation.
  • BSize wrappers over u8, u16, u32, u64, and usize for representing byte sizes with different underlying types.
  • FromStr impl for BSize, allowing for parsing string size representations like “1.5KiB” and “521TiB”.
  • Display impl for BSize, allowing for formatting byte sizes as human-readable strings in both binary (e.g., “1.5 MiB”) and decimal (e.g., “1.5 MB”) styles.
  • Serde support for binary and human-readable deserializers like JSON.

§Examples

Construction using the binary or decimal constant helpers.

use bsize::BSize;

assert!(BSize::<usize>::kib(4) > BSize::<usize>::kb(4));

Display as human-readable string.

use bsize::BSize;

assert_eq!(
    "518.0 GiB",
    BSize::<usize>::gib(518).display().binary().to_string()
);
assert_eq!(
    "556.2 GB",
    BSize::<usize>::gib(518).display().decimal().to_string()
);

Arithmetic operations are supported.

use bsize::BSize;

let plus = BSize::<usize>::mb(1) + BSize::<usize>::kb(100);
println!("{plus}");

let minus = BSize::<usize>::tb(1) - BSize::<usize>::gb(4);
assert_eq!(BSize::<usize>::gb(996), minus);

Arithmetic operations over the underlying types are supported.

 use bsize::BSize;

 let size = BSize::<usize>::mb(1);
 let size = size.with(|b| b * 4); // 4x scale
 println!("{size}");

Structs§

BSize
Byte size representation.
Display
Display wrapper for BSize.

Enums§

ParseError
The error returned when parsing a byte size fails.

Traits§

Unsigned
A marker trait for all unsigned integers.