package signature import "sync" const poolSliceMaxSize = 64 * 1024 type buffer struct { data []byte } var buffersPool = sync.Pool{ New: func() any { return new(buffer) }, } func newBufferFromPool(size int) *buffer { result := buffersPool.Get().(*buffer) if cap(result.data) < size { result.data = make([]byte, size) } else { result.data = result.data[:size] } return result } func returnBufferToPool(buf *buffer) { if cap(buf.data) > poolSliceMaxSize { return } buf.data = buf.data[:0] buffersPool.Put(buf) }