1
0
treerack/pool.go

26 lines
389 B
Go
Raw Normal View History

2026-06-09 21:04:04 +02:00
package treerack
type pool[T any] struct {
create func() T
values []T
}
func newPool[T any](create func() T) *pool[T] {
return &pool[T]{create: create}
}
func (p *pool[T]) get() T {
if len(p.values) == 0 {
return p.create()
}
last := len(p.values) - 1
v := p.values[last]
p.values = p.values[:last]
return v
}
func (p *pool[T]) put(v T) {
p.values = append(p.values, v)
}