26 lines
318 B
Go
26 lines
318 B
Go
package util
|
|
|
|
import "sync"
|
|
|
|
type Pool[T any] struct {
|
|
sync.Pool
|
|
}
|
|
|
|
func (p *Pool[T]) Get() T {
|
|
return p.Pool.Get().(T)
|
|
}
|
|
|
|
func (p *Pool[T]) Put(x T) {
|
|
p.Pool.Put(x)
|
|
}
|
|
|
|
func NewPool[T any](newF func() T) *Pool[T] {
|
|
return &Pool[T]{
|
|
Pool: sync.Pool{
|
|
New: func() interface{} {
|
|
return newF()
|
|
},
|
|
},
|
|
}
|
|
}
|