beryl

Crates.ioberyl
lib.rsberyl
version0.1.1
sourcesrc
created_at2021-04-10 19:22:05.711348
updated_at2021-07-24 20:15:35.640575
description64-bit unique identifier format
homepagehttps://github.com/max-niederman/beryl
repositoryhttps://github.com/max-niederman/beryl.git
max_upload_size
id381765
size19,807
Max Niederman (max-niederman)

documentation

README

Beryl

Crates.io Documentation Build Tests Test Coverage License

Beryl is a format for unique identifiers. This crate implements utilities for generating these identifiers and splitting them into their component parts.

Crystals

Beryl identifiers, or Crystals, are encoded into 64 bits as follows:

  • Generator ID: 14-bit unsigned integer identifying the Crystal's generator. Further segmentation is left to the application, as conflicts will not occur unless the scheme is changed unevenly over less than a millisecond.
  • Generator Counter: 8-bit unsigned integer incremented for every Crystal generated and reset each millisecond. This allows each generator to operate at up to 256,000 Crystals/sec.
  • Timestamp: 42-bit unsigned integer number of milliseconds since an application-defined epoch.

Epochs

Beryl defines no standard epoch which a timestamp should be measured from, as the limited timestamp size (242 milliseconds is about 140 years) may call for non-standard epochs. For ease of use, the UNIX Epoch should be best.

Commit count: 10

cargo fmt