Crate typed_bytesize

Source
Expand description

§Typed Bytesize

crates.io docs.rs check test

The library provides two types to represent bytesize:

§Functions

  • Bytesize types can parse each other’s units (e.g. ByteSizeIec can parse SI values like 114514GB);
  • Bytesize values will only be formatted as the unit has their owned prefix;
  • Bytesize types can be converted to each other;
  • Supporting addition, subtraction, scalar multiplication arithmetic operations;
  • Optional serde support.

§Example

use typed_bytesize::{ByteSizeIec, ByteSizeSi};

// SI
assert_eq!(ByteSizeSi::b(114u64), "114".parse().unwrap());
assert_eq!(ByteSizeSi::mb(114), "114MB".parse().unwrap());
print!("{}", ByteSizeSi::kb(310)); // 310.0kB

// IEC
assert_eq!(ByteSizeIec::b(514u64), "514".parse().unwrap());
assert_eq!(ByteSizeIec::mib(514), "514MiB".parse().unwrap());
print!("{}", ByteSizeIec::gib(93696)); // 91.5GiB

For more detailed examples, refer to tests.

§BNF

Parsing follows the rule:

expr    ::= num | term
term    ::= decimal " "* unit
decimal ::= num | float
float   ::= num "." num
num     ::= [0-9]+

§Features

  • serde: enable serde on ByteSizeSi and ByteSizeIec.
  • u128: use u128 instead of u64 as inner numeric type to support larger units. (TODO)

Structs§

ByteSizeIec
Binary prefix bytesize
ByteSizeSi
Decimal prefix bytesize

Enums§

Error

Constants§

B
1 byte
EB
1 exabyte
EIB
1 exbibyte
GB
1 gigabyte
GIB
1 gibibyte
KB
1 kilobyte
KIB
1 kibibyte
MB
1 megabyte
MIB
1 mebibyte
PB
1 petabyte
PIB
1 pebibyte
TB
1 terabyte
TIB
1 tebibyte