#uuid #guid #nanoid #unique-id #rust

yanked rs-nanoid

Nano ID in Rust -- most efficient and fast unique ID generation

1 unstable release

0.1.0 Oct 15, 2022

#7 in #nanoid

Custom license

48KB

rs-nanoid

Nano ID logo by Anton Lovchikov

This crate is the most efficient implementation of ai/nanoid.

https://crates.io/rs-nanoid

Features of the Nano ID spec are:

  • URL friendly
  • Use of cryptographic random generator
  • Uses a bigger alphabet than UUID, so a similar number of random bits are packed in just 21 chars instead of 36 (like UUID)
  • Much, much faster than UUID (v4)

Features of this specific implementation are:

  • Fastest and most performant implementation of Nano ID around (benchmarks)
  • Minimal memory usage.
  • Fully optimized (nanoid::standard and nanoid::standard_unsecure).

Docs and examples at https://docs.rs/rs-nanoid.

Install

Add to Cargo.toml under [dependencies].

rs-nanoid = "0.1.0"

Security

NanoID collision calculator:

If 1,000,000 Nano IDs of length 21 (a.k.a. nanoid::standard::<21>) were generated each second, ~41 thousand years would be required in order to have a 1.0% probability of a collision.

Comparison of Nano ID and UUID (V4).

More here.

Benchmarks

Tests are inside of lib.rs and benchmarks are in the benches folder.

These are benchmarks of nanoid::standard::<length>().

OS ARCH CPU
Windows 10 amd64 Core i7-7500U @ 2.7GHz
length sample pool graph (sample of 100 from pool)
8 ~254,200,000
21 ~124,000,000
36 ~86,300,000
255 ~18,200,000

References

License

GNU General Public License v3.0

Dependencies

~0.3–0.8MB
~14K SLoC