Crate typed_bytesize
source ·Expand description
§Typed Bytesize
The library provides two types to represent bytesize:
- ByteSizeSi for decimal prefix unit (SI)
- ByteSizeIec for binary prefix unit (IEC 80000-13)
§Functions
- Bytesize types can parse each other’s units (e.g.
ByteSizeIec
can parse SI values like114514GB
); - 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 onByteSizeSi
andByteSizeIec
.u128
: useu128
instead ofu64
as inner numeric type to support larger units. (TODO)
Structs§
- Binary prefix bytesize
- Decimal prefix bytesize
Enums§
Constants§
- 1 byte
- 1 exabyte
- 1 exbibyte
- 1 gigabyte
- 1 gibibyte
- 1 kilobyte
- 1 kibibyte
- 1 megabyte
- 1 mebibyte
- 1 petabyte
- 1 pebibyte
- 1 terabyte
- 1 tebibyte