43 个版本 (15 个重大更改)

0.16.0 2023 年 12 月 26 日
0.14.0 2023 年 12 月 4 日
0.13.0 2023 年 10 月 24 日
0.8.13 2023 年 7 月 15 日
0.3.3 2023 年 3 月 31 日

#20 in 值格式化

Download history 1842/week @ 2024-04-22 1467/week @ 2024-04-29 1577/week @ 2024-05-06 1185/week @ 2024-05-13 1381/week @ 2024-05-20 979/week @ 2024-05-27 920/week @ 2024-06-03 1245/week @ 2024-06-10 1037/week @ 2024-06-17 1908/week @ 2024-06-24 1105/week @ 2024-07-01 1820/week @ 2024-07-08 1366/week @ 2024-07-15 1150/week @ 2024-07-22 930/week @ 2024-07-29 1171/week @ 2024-08-05

每月下载 4,921
6 个 Crates 中使用 (5 个直接使用)

MIT 许可证

525KB
9K SLoC

可读性

CI crates.io docs.rs

readable

可读 字符串。

这个库

  • 将各种数据类型转换为可读字符串
  • 将原始字符串数据解析为可读版本
  • 提供各种字符串类型和实用工具

大多数字符串都实现为固定大小的栈分配数组,是 Copy-able。

通常,readable 类型用于需要快速将某些数据格式化为更易于人类阅读的字符串、显示它然后丢弃的情况(尽管大多数 readable 类型非常适合永久存储)。

readable 类型的创建相对高效。

示例

无符号

use readable::num::*;
assert_eq!(Unsigned::from(1000_u64), "1,000");

整型

use readable::num::*;
assert_eq!(Int::from(-1000), "-1,000");

浮点数

use readable::num::*;
assert_eq!(Float::from(1000.123), "1,000.123");

百分比

use readable::num::*;
assert_eq!(Percent::from(1000.123), "1,000.12%");

运行时间

use readable::run::*;
assert_eq!(Runtime::from(311.123),      "5:11");
assert_eq!(RuntimePad::from(311.123),   "00:05:11");
assert_eq!(RuntimeMilli::from(311.123), "00:05:11.123");

正常运行时间

use readable::up::*;
assert_eq!(Uptime::from(172799_u32),     "1d, 23h, 59m, 59s");
assert_eq!(UptimeFull::from(172799_u32), "1 day, 23 hours, 59 minutes, 59 seconds");
assert_eq!(Htop::from(172799_u32),       "1 day, 23:59:59");

日期

use readable::date::*;
assert_eq!(Date::from_ymd(2014, 12, 31).unwrap(), "2014-12-31");
assert_eq!(Nichi::new(2014, 12, 31).unwrap(),     "Wed, Dec 31, 2014");
assert_eq!(NichiFull::new(2014, 12, 31).unwrap(), "Wednesday, December 31st, 2014");

时间

use readable::time::*;
assert_eq!(Time::new(86399),     "11:59:59 PM");
assert_eq!(Military::new(86399), "23:59:59");

字节

use readable::byte::*;
assert_eq!(Byte::from(1234), "1.234 KB");

比较

所有数字类型都实现了对 str 和其内部数字的 PartialEq 实现。

这是比较 b 的内部 String

use readable::up::*;
let a = std::time::Duration::from_secs(86399);
let b = UptimeFull::from(a);
assert_eq!(b, "23 hours, 59 minutes, 59 seconds");

这是比较 a 的内部 i64

use readable::num::*;
let a = Int::from(-1000);
assert_eq!(a, -1000);

这比较了 a 和 b 内部的 u64String

use readable::num::*;
let a = Unsigned::from(1000_u64);
let b = Unsigned::from(1000_u64);
assert_eq!(a, b);

算术

所有数字类型都实现了常见的算术运算符 +-/*%,输出一个新的 Self

+ 加法

use readable::num::*;
let f1 = Float::from(1.0);
let f2 = Float::from(2.0);
assert_eq!(f1 + f2, 3.0);

- 减法

use readable::num::*;
let p50 = Percent::from(50.0);
let p25 = Percent::from(25.0);
assert_eq!(p50 - p25, "25.00%");

/ 除法

use readable::num::*;
let u100 = Unsigned::from(100_u64);
let u10  = Unsigned::from(10_u64);
assert_eq!(u100 / u10, 10);

* 乘法

use readable::num::*;
let u10 = Unsigned::from(10_u64);
assert_eq!(u10 * u10, Unsigned::from(100_u64));

% 模数

use readable::num::*;
let u10 = Unsigned::from(10_u64);
assert_eq!(u10 % u10, 0);

特性标志

这些特性用于序列化和反序列化。

特性标志 目的
serde 启用 serdeSerializeDeserialize
bincode 启用 bincode 2.0.0-rc.3EncodeDecode
borsh 启用 borshBorshSerializeBorshDeserialize

MSRV

最低支持 Rust 版本是 1.71.0

依赖项

~0–1.5MB
~25K SLoC