...

Package pool

import "go.uber.org/zap/internal/pool"
Overview
Index

Overview ▾

Package pool provides internal pool utilities.

type Pool

A Pool is a generic wrapper around sync.Pool to provide strongly-typed object pooling.

Note that SA6002 (ref: https://staticcheck.io/docs/checks/#SA6002) will not be detected, so all internal pool use must take care to only store pointer types.

type Pool[T any] struct {
    // contains filtered or unexported fields
}

func New

func New[T any](fn func() T) *Pool[T]

New returns a new Pool for T, and will use fn to construct new Ts when the pool is empty.

func (*Pool[T]) Get

func (p *Pool[T]) Get() T

Get gets a T from the pool, or creates a new one if the pool is empty.

func (*Pool[T]) Put

func (p *Pool[T]) Put(x T)

Put returns x into the pool.