paralleldrive / cuid2

Next generation guids. Secure, collision-resistant ids optimized for horizontal scaling and performance.
MIT License
2.68k stars 54 forks source link

docs: add go port to README #57

Open nrednav opened 1 year ago

nrednav commented 1 year ago

Link to port: nrednav/cuid2

Apologies for yet another Go port of this library. I noticed the other implementations did not include a complete suite of tests and so I wanted to try my hand at recreating the full package, including collision tests.

I tried to incorporate as much as I could gather from the ongoing discussion in https://github.com/paralleldrive/cuid2/issues/33. Would greatly appreciate any feedback.

Todo / Missing

ericelliott commented 1 year ago

I am not a go expert, but you could make the counter thread safe, right?

import "sync/atomic"

type Counter struct {
    value int64
}

func NewCounter(initialCount int64) *Counter {
    return &Counter{
        value: initialCount,
    }
}

func (c *Counter) Increment() int64 {
    return atomic.AddInt64(&c.value, 1)
}
nrednav commented 1 year ago

@ericelliott great suggestion, thanks! made the updates in: https://github.com/nrednav/cuid2/pull/1 and https://github.com/nrednav/cuid2/pull/2

nrednav commented 3 weeks ago

Package updated to include latest changes: https://github.com/nrednav/cuid2/pull/5