code: func randomIDGenerator() func() ID {
  	seed, err := binary.ReadVarint(bufio.NewReader(crand.Reader))
  	if err != nil {
  		seed = int64(time.Now().Nanosecond())
  	}
  	var (
  		mu  sync.Mutex
  		rng = rand.New(rand.NewSource(seed))
  	)
  	return func() ID {
  		mu.Lock()
  		defer mu.Unlock()
  		id := make([]byte, 16)
  		rng.Read(id)
  		return encodeID(id)
  	}
  }
docs: // randomIDGenerator returns a function generates a random IDs.