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 值格式化
每月下载 4,921 次
在 6 个 Crates 中使用 (5 个直接使用)
525KB
9K SLoC
可读性
人 可读 字符串。
这个库
- 将各种数据类型转换为可读字符串
- 将原始字符串数据解析为可读版本
- 提供各种字符串类型和实用工具
大多数字符串都实现为固定大小的栈分配数组,是 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 内部的 u64
和 String
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 |
启用 serde 的 Serialize 和 Deserialize |
bincode |
启用 bincode 2.0.0-rc.3 的 Encode 和 Decode |
borsh |
启用 borsh 的 BorshSerialize 和 BorshDeserialize |
MSRV
最低支持 Rust 版本是 1.71.0
。
依赖项
~0–1.5MB
~25K SLoC