scru128 1.0.0

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 in the use cases that 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)
  • 26-digit case-insensitive portable textual representation
  • 44-bit biased millisecond timestamp that ensures remaining life of 550 years
  • Up to 268 million time-ordered but unpredictable unique IDs per millisecond
  • 84-bit layered randomness for collision resistance
use scru128::{scru128, scru128_string};

// generate a new identifier object
let x = scru128();
println!("{}", x); // e.g. "00S6GVKR1MH58KE72EJD87SDOO"
println!("{}", x.as_u128()); // as a 128-bit unsigned integer

// generate a textual representation directly
println!("{}", scru128_string()); // e.g. "00S6GVKR3F7R79I72EJF0J4RGC"

See SCRU128 Specification for details.

Optional features

  • log - Enables logging via the log crate.
  • serde - Enables serialization/deserialization via serde.

License

Licensed under the Apache License, Version 2.0.

See also