#unique-identifier #identifier #ulid #uuid #guid #unique-id #ksuid

no-std scru128

SCRU128: 可排序的、基于时钟和随机数的唯一标识符

33 个版本 (20 个稳定版)

3.0.3 2024年8月17日
3.0.2 2023年9月18日
3.0.1 2023年7月29日
2.8.1 2023年6月20日
0.2.1 2021年11月21日

158算法

Download history 4/week @ 2024-04-29 6/week @ 2024-05-06 78/week @ 2024-05-13 19/week @ 2024-05-20 103/week @ 2024-05-27 72/week @ 2024-06-03 36/week @ 2024-06-10 12/week @ 2024-06-17 34/week @ 2024-06-24 55/week @ 2024-07-01 90/week @ 2024-07-08 105/week @ 2024-07-15 55/week @ 2024-07-22 16/week @ 2024-07-29 28/week @ 2024-08-05 207/week @ 2024-08-12

每月 306 次下载
用于 2 crates

Apache-2.0

57KB
973

SCRU128: 可排序的、基于时钟和随机数的唯一标识符

Crates.io License

SCRU128 ID 是为了满足需要去中心化、全球唯一时间顺序标识符的用户而针对 UUID 的一种替代方案。SCRU128 受 ULIDKSUID 的启发,具有以下特性:

  • 128 位无符号整数类型
  • 可按生成时间排序(作为整数和文本)
  • 25 位不区分大小写的文本表示(Base36)
  • 48 位毫秒 Unix 时间戳,确保使用寿命直到 10889 年
  • 每毫秒最多 281 万亿个有序但不可预测的唯一 ID
  • 80 位三层随机性以确保全球唯一性
// generate a new identifier object
let x = scru128::new();
println!("{}", x); // e.g., "036z951mhjikzik2gsl81gr7l"
println!("{}", x.to_u128()); // as a 128-bit unsigned integer

// generate a textual representation directly
println!("{}", scru128::new_string()); // e.g., "036z951mhzx67t63mq9xe6q0j"

有关详细信息,请参阅 SCRU128 规范

包功能

默认功能

  • std 配置 Scru128Generator 使用系统时钟。如果没有 std,此包提供了在 no_std 环境下可用的基本 SCRU128 原语。
  • rand 启用对 rand::RngCore 的泛型实现,以便使用 rand 和任何其他符合规范的随机数生成器与 Scru128Generator 一起使用。
  • default_rng (隐含 stdrand)为 Scru128Generator 提供默认的随机数生成器,并启用 Scru128Generator::new() 构造函数。
  • global_gen (隐含 default_rng)提供进程范围内的默认 SCRU128 生成器,并启用 new()new_string() 函数。

可选功能

  • serde 允许通过 serde 进行 Scru128Id 的序列化和反序列化。

许可证

根据 Apache 许可证 2.0 版本授权。

另请参阅

依赖项

约 35–530KB