scru128 2.5.3

SCRU128: Sortable, Clock and Random number-based Unique identifier
Documentation

SCRU128: Sortable, Clock and Random number-based Unique identifier

Crates.io License

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:

  • std enables the primary new() and new_string() functions and configures Scru128Generator with the system clock and default random number generator. Without std, this crate provides limited functionality available under no_std environments.

Optional features:

  • serde enables serialization/deserialization via serde.

License

Licensed under the Apache License, Version 2.0.

See also