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 在 算法 中
每月 306 次下载
用于 2 crates
57KB
973 行
SCRU128: 可排序的、基于时钟和随机数的唯一标识符
SCRU128 ID 是为了满足需要去中心化、全球唯一时间顺序标识符的用户而针对 UUID 的一种替代方案。SCRU128 受 ULID 和 KSUID 的启发,具有以下特性:
- 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
(隐含std
和rand
)为Scru128Generator
提供默认的随机数生成器,并启用Scru128Generator::new()
构造函数。global_gen
(隐含default_rng
)提供进程范围内的默认 SCRU128 生成器,并启用new()
和new_string()
函数。
可选功能
serde
允许通过 serde 进行Scru128Id
的序列化和反序列化。
许可证
根据 Apache 许可证 2.0 版本授权。
另请参阅
依赖项
约 35–530KB