github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/xstring/buffer.go (about)

     1  package xstring
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"sync"
     7  )
     8  
     9  type buffer struct {
    10  	bytes.Buffer
    11  }
    12  
    13  var buffersPool = sync.Pool{New: func() interface{} {
    14  	return &buffer{}
    15  }}
    16  
    17  func (b *buffer) Free() {
    18  	b.Reset()
    19  	buffersPool.Put(b)
    20  }
    21  
    22  func Buffer() *buffer {
    23  	val, ok := buffersPool.Get().(*buffer)
    24  	if !ok {
    25  		panic(fmt.Sprintf("unsupported type conversion from %T to *buffer", val))
    26  	}
    27  
    28  	return val
    29  }