#unit #units #typed #si-units #byte

typed-bytesize

以十进制或二进制前缀单位表示字节数

3个版本

0.1.2 2024年3月23日
0.1.1 2024年2月25日
0.1.0 2024年2月25日

#933 in 解析器实现

MIT 协议

28KB
737

类型化字节数

crates.io docs.rs check test

该库提供了两种类型来表示字节数

函数

  • 字节数类型可以解析彼此的单位(例如,ByteSizeIec 可以解析SI值如 114514GB);
  • 字节数值将仅按单位具有的自己的前缀进行格式化;
  • 字节数类型可以相互转换;
  • 支持 加法减法标量乘法 算术运算;
  • 可选 serde 支持。

示例

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

有关更详细的示例,请参阅 测试

BNF

解析遵循规则

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

特性

  • serde:在 ByteSizeSiByteSizeIec 上启用 serde
  • u128:使用 u128 而不是 u64 作为内部数值类型以支持更大的单位。 (待办事项)

依赖关系

~175KB