rs-nanoid

Crates.iors-nanoid
lib.rsrs-nanoid
version0.1.0
sourcesrc
created_at2022-10-15 04:58:24.169536
updated_at2022-10-15 04:58:24.169536
descriptionNano ID in Rust -- most efficient and fast unique ID generation.
homepage
repositoryhttps://github.com/jaevor/rs-nanoid
max_upload_size
id688717
size213,670
(elephant-irrelevant)

documentation

https://docs.rs/rs-nanoid

README

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

Commit count: 0

cargo fmt