#unique-id #file-path #url-safe #human-readable #serialization #unicode #white-space

hr-id

一个可读的唯一ID,支持Unicode,对URL和文件路径安全

9个版本 (5个重大更新)

0.6.0 2024年8月13日
0.5.1 2023年12月20日
0.5.0 2023年11月6日
0.4.0 2023年7月3日
0.1.0 2022年2月25日

358文本处理

Download history 28/week @ 2024-04-26 25/week @ 2024-05-03 29/week @ 2024-05-10 42/week @ 2024-05-17 44/week @ 2024-05-24 38/week @ 2024-05-31 32/week @ 2024-06-07 47/week @ 2024-06-14 43/week @ 2024-06-21 20/week @ 2024-06-28 24/week @ 2024-07-05 48/week @ 2024-07-12 49/week @ 2024-07-19 53/week @ 2024-07-26 36/week @ 2024-08-02 191/week @ 2024-08-09

每月下载 339
用于 19 个Crates (直接使用4个)

Apache-2.0

12KB
263 行代码

hr-id

为Rust提供的可读唯一ID

  • 支持Unicode
  • 不允许空格
  • 不允许常见的控制字符 .. 和以下每个 /~$`&|=^{}<>'\?:@#()
  • 不允许ASCII控制字符(整数值小于32的字节)
  • 可用于表示域名或URI段,但不能表示整个URL
  • 实现 From<Uuid>
  • 实现 SerializeDeserialize,具有 serde 功能
  • 实现 ToStreamFromStream,具有 destream 功能

lib.rs:

一个可读的ID,可安全用作URI路径的一部分,并支持常量 Label

功能

  • hash: 启用对 async-hash 的支持
  • serde: 启用对 serde 的支持
  • stream: 启用对 destream 的支持
  • uuid: 启用对 uuid 的支持

示例

use hr_id::{label, Id, Label};

const HELLO: Label = label("hello"); // unchecked!
let world: Id = "world".parse().expect("id");

assert_eq!(format!("{}, {}!", HELLO, world), "hello, world!");
assert_eq!(Id::from(HELLO), "hello");
assert!(Id::from_str("this string has whitespace").is_err());

依赖

~2.6–4.5MB
~82K SLoC