#雪花算法 #Twitter #ID #UID

rustflake

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

2 个版本

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

#15 in #UID

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

每月下载量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