11 个版本 (4 个破坏性更新)
0.5.6 | 2020年1月13日 |
---|---|
0.5.5 | 2020年1月9日 |
0.4.0 | 2020年1月6日 |
0.3.0 | 2020年1月6日 |
0.1.0 | 2020年1月6日 |
#12 in #uid
5KB
69 代码行数(不含注释)
snowflake-rust
Kubernetes "twitter" 雪崩。这不是发布版本,请不要在生产环境中使用。
默认情况下,原始 Twitter 雪崩格式定义了
- 35 位用于存储自定义纪元,精度为10毫秒
- 16 位用于存储 IP 地址的低16位
- 12 位用于存储序列号
使用方法
将以下内容添加到您的 Cargo.toml
[dependencies]
snowflake-rust = "0.5.6"
并将其添加到您的 crate 根目录
use snowflake_rust;
示例
use snowflake_rust::Snowflake;
fn main() {
let mut s = Snowflake::kubernetes();
let id = s.generate().unwrap();
println!("{:?}", id)
}
// singleton example
use snowflake_rust::Snowflake;
fn main() {
let id = id().unwrap();
println!("{:?}", id)
}
pub fn id() -> Option<i64> {
let instance = get_instance();
let mut sf = instance.lock().unwrap();
sf.generate()
}
fn get_instance() -> Arc<Mutex<Snowflake>> {
static mut SINGLETON: Option<Arc<Mutex<Snowflake>>> = None;
unsafe {
SINGLETON.get_or_insert_with( || {
Arc::new(Mutex::new(Snowflake::kubernetes()))
}).clone()
}
}
依赖项
~1MB
~18K SLoC