11 个版本
0.3.6 | 2024 年 7 月 1 日 |
---|---|
0.3.5 | 2024 年 3 月 11 日 |
0.2.2 | 2024 年 3 月 9 日 |
0.1.0 | 2024 年 3 月 7 日 |
#428 在 算法 中
每月 125 次下载
用于 configer
37KB
423 行
雪花
使用 Rust 简单实现的 Twitter
snowflake
算法。
1.用法
将此添加到你的 Cargo.toml
[dependencies]
snowflaker = "0.3"
# Or
# @see SnowflakeGenerator::dynamic()
snowflaker = { version = "0.3", features = ["dynamic"] }
2.APIs
2.1.生成器
2.1.1.内置
// use the default data-center ID and worker ID
let gen = SnowflakeGenerator::builtin();
assert!(gen.is_ok());
2.1.2.new
let gen = SnowflakeGenerator::new(31, 31);
assert!(gen.is_ok());
let gen = SnowflakeGenerator::new(32, 32);
assert!(gen.is_err());
2.1.3.动态
@since0.2.0
[dependencies]
snowflaker = { version = "${version}", features = ["dynamic"] }
let gen = SnowflakeGenerator::dynamic();
assert!(gen.is_ok());
let rvt = gen.unwrap().next_id();
assert!(rvt.is_ok());
2.2.函数
2.2.1.next_id
// 122235238222008321
let rvt = snowflaker::next_id();
assert!(rvt.is_ok());
2.2.2.next_id_string
// 122256588529602560
let rvt = snowflaker::next_id_string();
assert!(rvt.is_ok());
2.3.宏
@since0.3.0
2.3.1.snowflake_builtin
let rvt = snowflake_builtin!();
assert!(rvt.is_ok());
2.3.2.snowflake_builtin_string
let rvt = snowflake_builtin_string!();
assert!(rvt.is_ok());
2.3.3.snowflake_dynamic
let rvt = snowflake_dynamic!();
assert!(rvt.is_ok());
2.3.4.snowflake_dynamic_string
let rvt = snowflake_dynamic_string!();
assert!(rvt.is_ok());
2.4.自定义
数据中心
ID
worker
ID
let center_id = 16;
let worker_id = 16;
let gen = SnowflakeGenerator::new(center_id, worker_id);
assert!(gen.is_ok());
let rvt = gen.unwrap().next_id();
assert!(rvt.is_ok());
3.测试
3.1.cargo test
$ cargo test --features "dynamic" -- --show-output
$ cargo test --features "dynamic"
4.文档
4.1.功能
$ cargo doc --open --features dynamic
依赖项
~3.5–5.5MB
~107K SLoC