package utils

import "sync"

type ByteSlice struct {
	B []byte
}

var byteSlicePool = sync.Pool{
	New: func() any {
		return new(ByteSlice)
	},
}

func ByteSliceGet(length int) *ByteSlice {
	data := byteSlicePool.Get().(*ByteSlice)
	if cap(data.B) < length {
		data.B = make([]byte, length)
	} else {
		data.B = data.B[:length]
	}
	return data
}

func ByteSlicePut(data *ByteSlice) {
	data.B = data.B[:0]
	byteSlicePool.Put(data)
}
