Skip to main content

Crate globuid

Crate globuid 

Source
Expand description

GlobUid - A globally unique ID generator with pluggable algorithms and transport layer.

§Features

  • Multiple ID algorithms: Snowflake, ULID, NanoID
  • Distributed support with worker IDs (Snowflake)
  • Pluggable storage backends (memory, file, or custom)
  • Optional HTTP/gRPC transport layer

§Algorithms

AlgorithmOutputLengthSortableUse Case
Snowflakeu6464-bitTime-sortableDistributed systems
ULIDString26 charsLex-sortableURLs, databases
NanoIDString21 charsNoURLs, short identifiers

§Quick Start (Library)

use globuid::{Snowflake, SnowflakeConfig, MemoryStorage, IdGenerator};
use std::sync::Arc;

#[tokio::main]
async fn main() {
    // Snowflake (64-bit, distributed)
    let config = SnowflakeConfig::default();
    let storage = Arc::new(MemoryStorage::new());
    let generator = Snowflake::new(config, storage).await.unwrap();
    let id = generator.generate().await.unwrap();
    println!("Snowflake ID: {}", id);
     
    // ULID (128-bit, lexicographically sortable)
    let ulid = globuid::Ulid::with_default();
    let id = ulid.generate().await.unwrap();
    println!("ULID: {}", id);
     
    // NanoID (short URL-friendly)
    let nanoid = globuid::NanoId::with_default();
    let id = nanoid.generate().await.unwrap();
    println!("NanoID: {}", id);
}

§Transport Layers (optional features)

  • http: Enable HTTP REST API server
  • grpc: Enable gRPC server
  • full: Enable all transport layers

Re-exports§

pub use generator::Id;
pub use generator::IdGenerator;
pub use generator::IdType;
pub use generator::NanoId;
pub use generator::NanoIdConfig;
pub use generator::Snowflake;
pub use generator::SnowflakeConfig;
pub use generator::SnowflakeError;
pub use generator::Ulid;
pub use generator::UlidConfig;
pub use storage::FileStorage;
pub use storage::GeneratorState;
pub use storage::MemoryStorage;
pub use storage::Storage;

Modules§

generator
ID generation algorithms.
storage
Pluggable storage backend for GlobUid generator.

Type Aliases§

DefaultGenerator
Generator
GeneratorConfig
GeneratorError