Expand description
§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
// generate a new identifier object
let x = scru128::new();
println!("{}", x); // e.g., "036z951mhjikzik2gsl81gr7l"
println!("{}", x.to_u128()); // as a 128-bit unsigned integer
// generate a textual representation directly
println!("{}", scru128::new_string()); // e.g., "036z951mhzx67t63mq9xe6q0j"See SCRU128 Specification for details.
§Crate features
Default features:
stdconfiguresScru128Generatorwith the system clock. Withoutstd, this crate provides basic SCRU128 primitives available underno_stdenvironments.default_rng(impliesstd) provides the default random number generator forScru128Generatorand enables theScru128Generator::new()constructor.global_gen(impliesdefault_rng) provides the process-wide default SCRU128 generator and enables thenew()andnew_string()functions.rand08: See below.
Optional features:
serdeenables serialization/deserialization ofScru128Idvia serde.rand09enables an adapter forrand::RngCoreto userand(v0.9) and any other conforming random number generators withScru128Generator.rand08enables an adapter forrand::RngCoreto userand(v0.8) and any other conforming random number generators withScru128Generator. This feature is enabled bydefault_rngfor historical reasons but will be disabled in the future. Enablerand08explicitly when needed.
Re-exports§
pub use generator::Scru128Generator;
Modules§
- generator
- SCRU128 generator and related items.
Structs§
- Parse
Error - An error parsing an invalid string representation of SCRU128 ID.
- Scru128
Id - Represents a SCRU128 ID and provides converters and comparison operators.
Functions§
- new
global_gen - Generates a new SCRU128 ID object using the global generator.
- new_
string global_gen - Generates a new SCRU128 ID encoded in the 25-digit canonical string representation using the global generator.