Needed this functionality in a Rust application I'm writing so I ported the Go code to Rust.
What are the benefits of Snowflake compared to ULID, which already has Rust implementations[1][2]?
Not sure if this is also a limitation of Snowflake. But ULIDs are only unique down to a certain timescale. (milliseconds I believe)
Not exactly,
They can be sorted, by default, only down to a millisecond, but you can use a monotonic generator to have them sorted, even if more than one Ulid is generated within a millisecond.
Other than that, they have 80 bits of randomness, enough to be unique even if millions are generated per second.