#uuid #unique-identifier #distributed-id

nightly oats-rs

Short, unique ids without the hassle of random uuids

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

Download history 8/week @ 2024-09-22 2/week @ 2024-09-29

179 downloads per month

AGPL-3.0

33KB
555 lines

oats

Used 'nightly' toolchain Version 0.1.0

Short, unique ids without the hassle of random uuids.

Thanks

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