5 个版本 (3 个重大更改)
0.4.0 | 2023年4月20日 |
---|---|
0.3.0 | 2023年4月14日 |
0.2.0 | 2023年4月3日 |
0.1.1 | 2023年3月27日 |
0.1.0 | 2023年3月26日 |
#949 在 编码
每月下载 43 次
125KB
2.5K SLoC
雪云
一个小型库,用于基于时间戳、静态 ID 和序列计数器实现自定义 ID。该模块提供了两种类型的生成器,线程安全和非线程安全版本。它们允许在需要特定行为时进行不同类型的 ID 等待。每个生成器都能使用不同的雪花类型,以便支持不同的雪花格式。
// 43 bit timestamp, 8 bit primary id, 12 bit sequence
type MyFlake = snowcloud::i64::SingleIdFlake<43, 8, 12>;
type MyCloud = snowcloud::Generator<MyFlake>;
// 2023/03/23 9:00:00 in milliseconds, timestamps will start from this
// date
const START_TIME: u64 = 1679587200000;
let mut cloud = MyCloud::new(START_TIME, 1)
.expect("failed to create MyCloud");
let flake = cloud.next_id()
.expect("failed to create snowflake");
println!("{}", flake.id());
查看文档以获取更多信息
功能
- 整数类型:支持使用 i64 / u64 作为底层整数类型
- ID 段:支持不同数量的 ID 段,雪花中的 1/2 静态 ID 以及时间戳和序列
- 序列化和反序列化:支持使用 serde 将雪花序列化和反序列化为整数或字符串
状态
可以添加更多功能。
- 尽可能使用 Atomics(或合理的方式)。
- 其他辅助方法或结构体,如果它们是常见的用例。
- 尝试提高性能,以便库不会成为瓶颈
- 其他事项?
由于 API 相对简单,因此可能不会有太多更改,但作为预防措施,此版本号不会在最终确定之前进行重大更改(欢迎提出建议)。
贡献
欢迎修复、改进或建议。
依赖项
~175KB