Sigid: a zero-dependency, no_std, three-layer unique ID generator

Hey! :slight_smile:

I made Sigid β€” yet another crate for sortable unique IDs. I know the ecosystem already has ulid, uuid, snowflake-style crates, and so on. I just wanted to put together something that fit my own needs. Maybe it'll resonate with some of you too :slight_smile:

It has a dependency-free no_std core, support for custom alphabets, prefixes, and checksums, plus full worker-ID coordination for distributed setups β€” all without extra dependencies or heavyweight components.

It's split into three crates, since not every project needs all of it.

sigid-core β€” no dependencies, no_std, just encodes/decodes/generates 128-bit IDs as 26-character Crockford Base32 strings (timestamp + worker ID + counter + random).

sigid-flexible β€” configurable length/alphabet/prefix/checksum on top of the core.

sigid-enterprise β€” worker-ID coordination, UUID/ULID interop, and a handy inspect() function for pulling metadata back out of an ID.

The bit layout is basically Snowflake-style: 48-bit timestamp + 16-bit worker ID + 14-bit counter + 50-bit random, Base32-encoded, so it's typo-tolerant (the Crockford alphabet auto-corrects O/I/L).

I won't claim it's better or worse than ulid/uuid or other systems β€” those are solid, well-established libraries. This one was built for my own specific needs, involving a fairly complex visual editor and a database.

I'd genuinely appreciate any feedback, especially if something about the API design looks off β€” "why didn't you just use X?" is a useful comment too.

Repo: GitHub - dmitrymarison/Sigid: Sigid - Configurable ID generator for Rust (Simple β†’ Flexible β†’ Enterprise) Β· GitHub
Crates: sigid-core / sigid-flexible / sigid-enterprise on crates.io

Thanks! Cheers!