2 releases

0.1.1 Jul 24, 2021
0.1.0 Apr 10, 2021

MIT license

269 lines


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.


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.


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.

No runtime deps