5 releases
0.2.1 | Mar 20, 2024 |
---|---|
0.2.0 | Mar 20, 2024 |
0.1.2 | Mar 20, 2024 |
0.1.1 | Mar 3, 2024 |
0.1.0 | Feb 26, 2024 |
#1475 in Development tools
179 downloads per month
33KB
555 lines
oats
Short, unique ids without the hassle of random uuids.
Thanks
- Inspired from https://github.com/BinChengZhao/snowflake-rs.
Getting started
Adding library to project
cargo add oats-rs
Using it to generate unique identifiers
use oats::bowl::{GenerationBehavior, WrappedBowl};
use std::time::SystemTime;
let wrapped_bowl = WrappedBowl::of(1, GenerationBehavior::Normal, Some(SystemTime::now()));
let oat = wrapped_bowl.generate();
assert_eq!(oat.node(), 1);
Syntax of Oats
When using ToString, the Oat object is displayed in a mixed format that includes the node ID and a local unique identifier (LUID) with a timestamp and sequence ID. The LUID is encoded as a URL-safe base64 string without padding.
const ENGINE: FastPortable = FastPortable::from(&URL_SAFE, NO_PAD);
format!("{:X>2X}{}", &self.node, encode_engine(&self luid.to_le_bytes(), &ENGINE))
Dependencies
~255KB