wrote spec
This commit is contained in:
commit
f43327aa00
4 changed files with 52 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/target
|
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[package]
|
||||||
|
name = "icechip"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
repository = "https://git.cbax.dev/icechip"
|
||||||
|
license = "MIT OR Apache-2.0"
|
||||||
|
|
||||||
|
[dependencies]
|
29
README.md
Normal file
29
README.md
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# Icechip
|
||||||
|
|
||||||
|
A snowflake library that actually does what it is supposed to.
|
||||||
|
|
||||||
|
Adheres to the twitter specification, but also has an improved mode.
|
||||||
|
|
||||||
|
## Twitter Specification
|
||||||
|
| u64 or i64 | | | |
|
||||||
|
|:-:|:-:|:-:|:-:|
|
||||||
|
| bits 0-40 | bits 41-51 | bits 51-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-52 | 53-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-96 | 96-127 |
|
||||||
|
| full unix timestamp ms | machine id | sequence number |
|
14
src/lib.rs
Normal file
14
src/lib.rs
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue