| Crates.io | snowflaked |
| lib.rs | snowflaked |
| version | 1.0.3 |
| created_at | 2022-06-13 17:15:15.381476+00 |
| updated_at | 2024-02-24 17:12:14.858929+00 |
| description | A crate for creating and working with snowflake ids |
| homepage | |
| repository | https://github.com/MrGunflame/snowflaked-rs |
| max_upload_size | |
| id | 605213 |
| size | 53,986 |
A crate for creating and working with snowflake ids.
Add snowflaked to your Cargo.toml:
snowflaked = "1.0.0"
This crate provides APIs for generating new snowflake ids and defining custom snowflake types.
Use the Generator type to create new snowflake ids:
use snowflaked::Generator;
let mut generator = Generator::new(0);
let id: u64 = generator.generate();
Or use the thread-safe sync::Generator type (requires the optional sync feature):
use snowflaked::sync::Generator;
static GENERATOR: Generator = Generator::new(0);
fn generate_id() -> u64 {
GENERATOR.generate()
}
Custom snowflake types can be defined with the Snowflake trait. This trait is currently
implemented for u64 and i64 and can be used to define your custom types:
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()
}
}
Licensed under either