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
| Algorithm | Output | Length | Sortable | Use Case |
|---|---|---|---|---|
| Snowflake | u64 | 64-bit | Time-sortable | Distributed systems |
| ULID | String | 26 chars | Lex-sortable | URLs, databases |
| NanoID | String | 21 chars | No | URLs, 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 servergrpc: Enable gRPC serverfull: 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;