yuid

A small, unique, URL-safe ID generator written in Go.
git clone git://git.lair.cx/yuid
Log | Files | Refs | README | LICENSE

id.go (489B)


      1 package yuid
      2 
      3 import "errors"
      4 
      5 const IDSize = 20
      6 
      7 type ID [IDSize]byte
      8 
      9 //goland:noinspection GoUnusedGlobalVariable
     10 var (
     11 	// Nil is a nil ID.
     12 	Nil ID
     13 )
     14 
     15 var (
     16 	ErrInvalidIDLength = errors.New("invalid id length")
     17 )
     18 
     19 func FromString(s string) (ID, error) {
     20 	return FromBytes([]byte(s))
     21 }
     22 
     23 func FromBytes(b []byte) (ID, error) {
     24 	if len(b) != IDSize {
     25 		return Nil, ErrInvalidIDLength
     26 	}
     27 	var id ID
     28 	copy(id[:], b)
     29 	return id, nil
     30 }
     31 
     32 func (id ID) String() string {
     33 	return string(id[:])
     34 }