2 个版本
0.1.1 | 2018 年 11 月 7 日 |
---|---|
0.1.0 | 2018 年 11 月 5 日 |
#5 在 #重新实现
7KB
116 行
sf-rs
用 Rust 重新实现 snowflake
用法
将此添加到您的 Cargo.toml 中
[dependencies]
snowflake = "0.1"
并将其添加到您的创建根目录中
extern create snowflake_rs;
生成代码示例
单线程示例
extern crate snowflake_rs;
use std::thread;
use snowflake_rs::{SnowFlakeId, STANDARD_EPOCH};
fn main() {
let mut id_gen = SnowFlakeId::new(1, STANDARD_EPOCH);
println!("{:?}",&id_gen);
for _ in 1..1000 {
let id = id_gen.generate_id();
assert!(id.is_ok());
println!("{:?}",id.unwrap());
}
}
多线程示例
extern crate snowflake_rs;
use std::thread;
use snowflake_rs::{SnowFlakeId, STANDARD_EPOCH};
fn main() {
let id_gen = SnowFlakeId::new_multi_thread(2, STANDARD_EPOCH);
let mut ths = Vec::new();
for _i in 1 .. 10{
let t = id_gen.clone();
ths.push(thread::spawn(move || {
for _ in 1..1000 {
let mut gen = t.lock().unwrap();
let id = gen.generate_id();
assert!(id.is_ok());
println!("{:?}",id.unwrap());
}
}));
}
for t in ths {
t.join();
}
}
许可证
sf-rs
根据 Apache 许可证(版本 2.0)分发。
有关详细信息,请参阅 LICENSE。
版权所有 2017 wtu-sos
依赖
~0.6–1MB
~15K SLoC