#uuid #unique #guid #crockford

crockford-uuid

A library to generate and parse Crockford Base32 Identifiers

3 releases

0.1.2 May 27, 2023
0.1.1 May 27, 2023
0.1.0 May 27, 2023

#18 in #guid

37 downloads per month

MIT license

11KB
211 lines

crockford-uuid

Here's an example of a crockford-uuid:

4s0y2vz7sf4vghnznytz9gvq6

A crockford-uuid Uuid is a unique 120-bit value, stored as 15 bytes identifier, and a fixed number checksum character derived from the identifier for value's integrity check.

The uniqueness property is not strictly guaranteed, however for all practical purposes, it can be assumed that an unintentional collision would be extremely unlikely as the 120 bit key space is about the same size as the number of bacterial cells in existence on the planet. :)

Getting started

Add the following to your Cargo.toml:

crockford-uuid = "0.1.2"

When you want a identifier, you can generate one:

use crockford-uuid::Uuid;

let id = Uuid::new();

If you have a crockford-uuid value, you can use its string literal, BigUint and Bytes values inline:

use uuid::Uuid;

const from_string_lit: Uuid = "4s0y2vz7sf4vghnznytz9gvq6".try_into().unwrap();
const from_big_uint: Uuid = BigUint::parse_bytes(b"471569087780948647371060810118848519319753452797", 10).unwrap().try_into().unwrap();

You can also convert crockford-uuid to be used as a string literal, BigUint, Vec<u8> (Bytes)

const to_str = Uuid::to_string();
const to_big_uint: BigUint = Uuid::new().into();
const to_vec: Vec<u8> = Uuid::new().into();

For more details on using crockford-uuid, see the library documentation.

References

https://learning.oreilly.com/library/view/api-design-patterns/9781617295850/OEBPS/Text/06.htm#:-:text=6.3.3 https://www.crockford.com/base32.html

Dependencies

~8MB
~233K SLoC