nanoid

A tiny, secure, URL-friendly, unique string ID generator for Go
git clone git://git.lair.cx/nanoid
Log | Files | Refs | README

commit 3fbee55188451fb764e60ebcc7c6cab7e437fd7e
parent a9ba6fa04c2792c10928e28d8157b8bfca337c64
Author: Yongbin Kim <iam@yongbin.kim>
Date:   Tue, 10 Jan 2023 05:19:24 +0000

Some unsafe stuff
... with very small performance benifit

Diffstat:
Mnanoid.go | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/nanoid.go b/nanoid.go @@ -3,6 +3,7 @@ package nanoid import ( "io" "sync" + "unsafe" cryptoRand "crypto/rand" ) @@ -52,14 +53,15 @@ func (g *generator) Generate() NanoID { g.offset = 0 } - var id NanoID + var id = (*NanoID)(unsafe.Pointer(&g.buf[g.offset])) - for i := 0; i < idSize; i++ { - id[i] = characters[g.buf[g.offset+i]&0b00111111] + for i, v := range id { + id[i] = characters[v&0b00111111] } + g.offset += idSize - return id + return *id } func Generate() NanoID {