3个版本
0.1.2 | 2024年3月23日 |
---|---|
0.1.1 | 2024年2月25日 |
0.1.0 | 2024年2月25日 |
#933 in 解析器实现
28KB
737 行
类型化字节数
该库提供了两种类型来表示字节数
- ByteSizeSi 用于 十进制 前缀单位(国际单位制)
- ByteSizeIec 用于 二进制 前缀单位(IEC 80000-13)
函数
- 字节数类型可以解析彼此的单位(例如,
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
:在ByteSizeSi
和ByteSizeIec
上启用 serde。u128
:使用u128
而不是u64
作为内部数值类型以支持更大的单位。 (待办事项)
依赖关系
~175KB