Expand description
BSize provides multiple semantic wrappers and utilities for byte size representations.
§Features
#![no_std]-capable, no dependencies, and uses no heap allocation.BSizewrappers overu8,u16,u32,u64, andusizefor representing byte sizes with different underlying types.FromStrimpl forBSize, allowing for parsing string size representations like “1.5KiB” and “521TiB”.Displayimpl forBSize, 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§
Enums§
- Parse
Error - The error returned when parsing a byte size fails.
Traits§
- Unsigned
- A marker trait for all unsigned integers.