34 lines
585 B
Go
34 lines
585 B
Go
// Package pools holds various pools for reuse
|
|
package pools
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
var builders = sync.Pool{
|
|
New: func() any { return new(strings.Builder) },
|
|
}
|
|
|
|
func GetBuilder() *strings.Builder {
|
|
return builders.Get().(*strings.Builder)
|
|
}
|
|
|
|
func ReleaseBuilder(builder *strings.Builder) {
|
|
builder.Reset()
|
|
builders.Put(builder)
|
|
}
|
|
|
|
var buffers = sync.Pool{
|
|
New: func() any { return new(bytes.Buffer) },
|
|
}
|
|
|
|
func GetBuffer() *bytes.Buffer {
|
|
return buffers.Get().(*bytes.Buffer)
|
|
}
|
|
|
|
func ReleaseBuffer(buffer *bytes.Buffer) {
|
|
buffer.Reset()
|
|
buffers.Put(buffer)
|
|
}
|