Generating a cuid. The implementation requires a counter, so an actor is used to keep track of that state. This means before generating a cuid, an actor needs to be started and all work is done via a channel.

Slugs are also supported.


import ids/cuid

assert Ok(channel) = cuid.start()

let id = cuid.gen(channel)

let slug = cuid.slug(channel)


pub opaque type Message
pub opaque type State


pub fn gen(channel: Sender(Message)) -> String
pub fn is_cuid(id: String) -> Bool
pub fn is_slug(slug: String) -> Bool
pub fn slug(channel: Sender(Message)) -> String
pub fn start() -> Result(Sender(Message), StartError)