#雪花算法 #Twitter #ID #UID

rustflake

线程安全的 'Twitter' 雪花算法

2 个版本

0.1.1 2019年8月4日
0.1.0 2019年8月4日

#15 in #UID

Download history 153/week @ 2024-04-06 107/week @ 2024-04-13 102/week @ 2024-04-20 111/week @ 2024-04-27 80/week @ 2024-05-04 83/week @ 2024-05-11 59/week @ 2024-05-18 66/week @ 2024-05-25 59/week @ 2024-06-01 33/week @ 2024-06-08 55/week @ 2024-06-15 50/week @ 2024-06-22 27/week @ 2024-06-29 22/week @ 2024-07-06 57/week @ 2024-07-13 29/week @ 2024-07-20

每月下载量140次
用于 zero4rs

MIT 许可协议

5KB
59

rustflake

线程安全的 "Twitter" 雪花算法。

默认情况下,原始的 Twitter 雪花算法格式定义了

  • 使用 41 位存储自定义纪元,精确到毫秒
  • 使用 10 位存储工作节点和数据中心的详细信息
  • 使用 12 位存储序列号

此包允许您自定义自己的纪元以及工作节点/数据中心信息。

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
rustflake = "0.1.0"

并将此内容添加到您的 crate 根目录下

use rustflake;

示例

use rustflake::Snowflake;

fn main() {
    let mut snowflake = Snowflake::default();
    println!("{}", &snowflake.generate());
}
use rustflake::Snowflake;

fn main() {
    // Discord Epoch
    // Though those are not "real" discord Ids,
    // because discord increases the sequence
    // for *every* generated Id on that process
    let mut snowflake = Snowflake::new(1420070400000, 1, 1);
    println!("{}", &snowflake.generate());
}
use rustflake::Snowflake;

fn main() {
    // Using a builder approach
    let mut snowflake = Snowflake::default()
        .epoch(1_564_790_400_000)
        .worker_id(2)
        .datacenter_id(3);
    println!("{}", &snowflake.generate());
}

依赖项

~1.6–2MB
~32K SLoC