Skip to main content

basic/
basic.rs

1//! Minimal example: generate one of each ID type.
2//!
3//! Run with: `cargo run --example basic`
4
5use id_forge::{nanoid, snowflake::Snowflake, ulid::Ulid, uuid::Uuid};
6
7fn main() {
8    let v4 = Uuid::v4();
9    println!("UUID v4:    {v4} (version={})", v4.version());
10    println!("UUID v7:    {}", Uuid::v7());
11    println!("UUID nil:   {}", Uuid::nil());
12
13    let a = Ulid::new();
14    let b = Ulid::new();
15    println!("ULID a:     {a}");
16    println!("ULID b:     {b} (monotonic: {})", b > a);
17
18    let gen = Snowflake::new(1);
19    let sf = gen.next_id();
20    let (ts_offset, worker, seq) = Snowflake::parts(sf);
21    println!(
22        "Snowflake:  {sf}  (ts+epoch={}, worker={worker}, seq={seq})",
23        ts_offset + gen.epoch_ms()
24    );
25
26    println!("NanoID 21:  {}", nanoid::generate());
27    println!("NanoID 8:   {}", nanoid::with_length(8));
28
29    assert_eq!(v4, Uuid::parse_str(&v4.to_string()).unwrap());
30    assert_eq!(a, Ulid::parse_str(&a.to_string()).unwrap());
31}