每月 10 个稳定版本
2.1.3 | 2022 年 12 月 31 日 |
---|---|
2.1.2 | 2022 年 11 月 16 日 |
2.1.0 | 2022 年 10 月 5 日 |
1.1.1 | 2021 年 5 月 20 日 |
0.1.1 | 2016 年 11 月 19 日 |
#1 in 值格式化
587,607 每月下载量
用于 313 个 crate (135 直接)
25KB
361 行
Humansize
特性
Humansize 是一个信息大小的人类化库,它
- 简单且方便使用
- 可定制
- 支持字节或比特大小
no-std
- 可选非分配
- 可选接受有符号值
如何使用它...
将 humansize 添加到项目 cargo.toml
中的依赖项
[dependencies]
...
humansize = "2.1.3"
... 以轻松格式化大小
- 导入
format_size
函数以及您首选的默认设置DECIMAL
(SI)BINARY
(IEC)WINDOWS
(IEC 值但 SI 单位)
- 使用无符号整数调用
format_size
use humansize::{format_size, DECIMAL};
let size = 1_000_000u64;
let res: String = format_size(size, DECIMAL);
assert_eq!(&res, "1 MB");
... 以格式化多个大小
为了提高可重用性,您可以使用 create_format
,它返回一个类似 format_size
的格式化函数,但具有柯里化的选项参数,因此不需要再次指定
use humansize::{make_format, DECIMAL};
let formatter = make_format(DECIMAL);
assert_eq!(formatter(1_000_000u64), "1 MB");
assert_eq!(formatter(1_000_000_000u64), "1 GB");
//...
... 以避免分配
在项目的 cargo.toml
中指定 no_alloc
功能标志
[dependencies]
...
humansize = { version = "2.0.0", features = ["no_alloc"] }
这将从编译中排除所有分配代码。现在您可以使用库的内部 SizeFormatter
结构体,它实现了 core::fmt::display
,因此您可以将其 write!
到您选择的自定义缓冲区中
use humansize::{SizeFormatter, DECIMAL};
let formatter = SizeFormatter::new(1_000_000usize, DECIMAL);
assert_eq!(format!("{}", formatter), "1 MB");
... 使用 impl
风格的 API
出于样式原因,您可能更喜欢使用早期版本crate的impl-style API。要这样做,请在项目的cargo.toml
中指定impl-style
功能标志。
[dependencies]
...
humansize = { version = "2.0.0", features = ["impl_style"] }
启用此功能将使两种方法可用
format_size
在无符号整数类型上format_size_i
在有符号整数类型上。
要使用它,将FormatSize trait引入作用域,并在整数类型上调用其方法
use humansize::{FormatSize, FormatSizeI DECIMAL};
assert_eq!(1_000_000u64.format_size(DECIMAL), "1 MB");
assert_eq!((-1_000_000).format_size_i(DECIMAL), "-1 MB");
... 以进一步自定义输出
Humansize导出三个默认选项集
Decimal
:千位为1000,单位格式为XB
。Binary
:千位为1024,单位格式为XiB
。WINDOWS
(Windows):千位为1024,单位格式为XB
。
可以通过提供自己的选项集进一步自定义格式化。查看FormatSizeOptions
结构的文档,以查看所有可访问的参数,以及此示例以了解其用法。
... 以接受负值
上述解决方案仅接受无符号整数类型作为输入(usize
、8
、u16
、u32
和u64
)。但是,如果接受负值对您的应用程序正确,则存在每个它们的替代方案,将接受有符号整数类型,并在为负时相应地格式化。
format_size
:format_size_i
create_format
:create_format_i
FormatSize
特质:FormatSizeI
特质SizeFormatter
:ISizeFormatter
use humansize::{format_size_i, make_format_i, ISizeFormatter, DECIMAL};
assert_eq!(&format_size_i(-1_000_000, DECIMAL), "-1 MB");
let signed_formatter = make_format_i(DECIMAL);
assert_eq!(&signed_formatter(-1_000_000), "-1 MB");
// With the `impl-style` feature enabled:
// use humansize::FormatSizeI;
// assert_eq(-1_000_000.format_size(DECIMAL), "-1 MB");
let signed_size_formatter = ISizeFormatter::new(-1_000_000, DECIMAL);
assert_eq!(format!("{}", signed_size_formatter), "-1 MB");
许可证
该项目受以下任一许可证的许可
- Apache许可证第2版,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则您提交给humansize以供包含的所有贡献,根据Apache-2.0许可证定义,将按上述方式双许可,不附加任何其他条款或条件。
依赖关系
~410KB