A real twitter snowflake implementation in Rust
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md |
Icechip
A snowflake library that actually does what it is supposed to.
(Mostly) adheres to the twitter specification, but also has an improved mode.
NOTE: Only enhanced and extended modes are available at this time. Twitter original spec is horridly painful to implement with generics, as it supports both u64 and i64 and ignores the sign bit completely in both modes. (essentially u63 and i64 modes).
Twitter Specification
u64 or i64 | |||
---|---|---|---|
0-40 | 41-51 | 52-62 | 63 |
time since an epoch in ms | machine id | sequence number | sign |
Enhanced Specification
Utilizes a 64 bit unsigned integer, moves the now spare sign bit and one sequence bit to the machine ID.
u64 | ||
---|---|---|
0-40 | 41-53 | 54-63 |
time since an epoch in ms | machine id | sequence number |
Extended Enhanced Specification
Utilizes a 128 bit unsigned integer. 32bit machine id, 32bit sequence number. (Ought to be enough for anybody™)
u128 | ||
---|---|---|
0-63 | 64-95 | 96-127 |
full unix timestamp ms | machine id | sequence number |
Another good doc explaining the general fuctionality of snowflakes:discord api reference