#雪花ID #ID #生成 #生成 #类型

snowflaked

一个用于创建和使用雪花ID的crate

13个版本 (4个稳定版本)

1.0.3 2024年2月24日
1.0.2 2023年5月24日
1.0.1 2023年4月26日
1.0.0 2023年2月15日
0.1.2 2022年6月14日

#724Rust模式

Download history 330/week @ 2024-04-26 284/week @ 2024-05-03 175/week @ 2024-05-10 218/week @ 2024-05-17 238/week @ 2024-05-24 210/week @ 2024-05-31 219/week @ 2024-06-07 126/week @ 2024-06-14 190/week @ 2024-06-21 137/week @ 2024-06-28 227/week @ 2024-07-05 167/week @ 2024-07-12 345/week @ 2024-07-19 309/week @ 2024-07-26 171/week @ 2024-08-02 165/week @ 2024-08-09

每月1,018次下载
3 crate 中使用

MIT/Apache

41KB
737

Snowflaked

Crates.io Docs.rs

一个用于创建和使用雪花ID的crate。

使用方法

snowflaked 添加到你的 Cargo.toml

snowflaked = "1.0.0"

这个crate提供了生成新的雪花ID和定义自定义雪花类型的API。

雪花ID生成

使用 Generator 类型创建新的雪花ID

use snowflaked::Generator;

let mut generator = Generator::new(0);
let id: u64 = generator.generate();

或者使用线程安全的 sync::Generator 类型(需要可选的 sync 功能)

use snowflaked::sync::Generator;

static GENERATOR: Generator = Generator::new(0);

fn generate_id() -> u64 {
    GENERATOR.generate()
}

使用自定义雪花类型

可以使用 Snowflake trait 定义自定义雪花类型。该trait目前为 u64i64 实现,可以用来定义你的自定义类型

use snowflaked::Snowflake;

struct UserId(u64);

impl Snowflake for UserId {
    fn from_parts(timestamp: u64, instance: u64, sequence: u64) -> Self {
        Self(u64::from_parts(timestamp, instance, sequence))
    }

    fn timestamp(&self) -> u64 {
        self.0.timestamp()
    }

    fn instance(&self) -> u64 {
        self.0.instance()
    }

    fn sequence(&self) -> u64 {
        self.0.sequence()
    }
}

许可证

根据您的选择,许可协议为

依赖

~0–26MB
~329K SLoC