#雪崩 #重新实现 #添加 #管理器 #重新实现

snowflake-rs

在 Rust 中重新实现雪崩

2 个版本

0.1.1 2018 年 11 月 7 日
0.1.0 2018 年 11 月 5 日

#5#重新实现

Apache-2.0

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