I recently started a tiny side project that implements the Beanstalk protocol. If you’ve never heard of beanstalkd
, it’s a work queue that’s really convenient for simple projects: you post jobs to queues and those jobs are picked up and handled by workers. Each job that you post to a queue has a priority that goes from 0 (urgent) to 4,294,967,295 (not so much). In Swift, this can be represented with a UInt32
, but let’s see how we can use Tagged
to make it safer and more expressive, starting with an example from a real-world codebase.