13个版本 (2个稳定版)
新 1.0.1 | 2024年8月17日 |
---|---|
1.0.0 | 2023年9月28日 |
0.5.0 | 2023年9月23日 |
0.4.2 | 2023年9月6日 |
0.1.0 | 2023年3月15日 |
#193 在 数据结构 中
每月117 次下载
83KB
1.5K SLoC
SCRU64: 可排序、基于时钟、特定领域唯一标识符
SCRU64 ID提供由分布式节点生成的紧凑、按时间顺序排列的唯一标识符。SCRU64具有以下特性
- 63位非负整数,可以存储为有符号/无符号64位整数
- 按生成时间排序(作为整数和文本)
- 12位不区分大小写的文本表示(Base36)
- 基于Unix纪元的约38位时间戳,确保使用寿命直到4261年
- 可变长度的节点/机器ID和计数器字段,共享24位
// pass node ID through environment variable
// (e.g., SCRU64_NODE_SPEC=42/8 command ...)
// generate a new identifier object
let x = scru64::new();
println!("{}", x); // e.g., "0u2r85hm2pt3"
println!("{}", x.to_u64()); // as a 64-bit unsigned integer
// generate a textual representation directly
println!("{}", scru64::new_string()); // e.g., "0u2r85hm2pt4"
有关详细信息,请参阅SCRU64规范。
SCRU64的唯一性是领域特定的,即依赖于对每个生成器的节点ID的集中分配。如果您需要去中心化、全局唯一的按时间顺序排列的标识符,请考虑SCRU128。
包功能
默认功能
std
将库与系统时钟等集成,以获取当前时间戳。在没有std
的情况下,此包在no_std
环境中提供有限的功能。global_gen
(暗示std
)启用了主要的new()
和new_string()
函数以及底层的进程范围全局生成器。
可选功能
serde
通过serde启用序列化/反序列化。tokio
(与global_gen
一起)启用了tokio::new()
和tokio::new_string()
函数,这是new()
和new_string()
的非阻塞对应物。
许可
根据Apache许可证版本2.0许可。
另请参阅
依赖关系
~0–1.3MB
~24K SLoC