twitter_snowflake 1.0.2

A lightweight, efficient library that implements Twitter's Snowflake algorithm
Documentation
use {
    std::{
        error::Error,
        sync::{mpsc, Arc, Mutex},
        thread,
        time::Duration,
    },
    twitter_snowflake::Snowflake,
};

fn main() -> Result<(), Box<dyn Error>> {
    let worker_id = 1;
    let snowflake = Arc::new(Mutex::new(Snowflake::new(worker_id)?));
    let (tx, rx) = mpsc::channel();

    for _ in 0 .. 10 {
        let snowflake = Arc::clone(&snowflake);
        let tx = tx.clone();

        thread::spawn(move || {
            if let Ok(mut guard) = snowflake.lock() {
                match guard.generate() {
                    Ok(sfid) => {
                        let _ = tx.send(sfid);
                    }
                    Err(e) => {
                        println!("Generate error: {}", e);
                    }
                }
            }
        });
    }

    thread::sleep(Duration::from_secs(1));

    for _ in 0 .. 10 {
        let sfid = rx.recv()?;
        println!("Snowflake ID: {}", sfid);
    }

    Ok(())
}