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) }