Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.
For full rationale behind CUIDs refer to the main project site.
Add Cuid as a dependency in your mix.exs file:
defp deps do:
[{:cuid, "~> 0.1.0"}]
endRun mix deps.get to fetch and compile Cuid. It works as a process
{:ok, pid} = Cuid.start_link
Cuid.generate(pid) # => ch72gsb320000udocl363eofyEach CUID is made by the following groups: c - h72gsb32 - 0000 - udoc - l363eofy
cidentifies this as a cuid, and allows you to use it in html entity ids. The fixed value helps keep the ids sequential.h72gsb32is a timestamp0000is a counterudocis a fingerprint. The first two characters are based on the process ID and the next two are based on the hostname. This is the same method used in the Node implementationl363eofyrandom (uses:random.uniform)
- Optimize (it takes 15s to run 200000 generations in my MBP)
- Lucas Duailibe
- Eric Elliott (author of original JavaScript version)