SCRU128: Sortable, Clock and Random number-based Unique identifier
SCRU128 ID is yet another attempt to supersede UUID for the users who need decentralized, globally unique time-ordered identifiers. SCRU128 is inspired by ULID and KSUID and has the following features:
- 128-bit unsigned integer type
- Sortable by generation time (as integer and as text)
- 25-digit case-insensitive textual representation (Base36)
- 48-bit millisecond Unix timestamp that ensures useful life until year 10889
- Up to 281 trillion time-ordered but unpredictable unique IDs per millisecond
- 80-bit three-layer randomness for global uniqueness
use ;
// generate a new identifier object
let x = scru128;
println!; // e.g. "036Z951MHJIKZIK2GSL81GR7L"
println!; // as a 128-bit unsigned integer
// generate a textual representation directly
println!; // e.g. "036Z951MHZX67T63MQ9XE6Q0J"
See SCRU128 Specification for details.
Crate features
Default features:
stdenables the primaryscru128()andscru128_string()functions and configuresScru128Generatorwith the system clock and default random number generator. Withoutstd, this crate provides limited functionality available underno_stdenvironments. Note that theno_stdsupport is experimental.
Optional features:
serdeenables serialization/deserialization via serde.
License
Licensed under the Apache License, Version 2.0.