package pool import "github.com/gobwas/pool/internal/pmath" // Option configures pool. type Option func(Config) // Config describes generic pool configuration. type Config interface { AddSize(n int) SetSizeMapping(func(int) int) } // WithSizeLogRange returns an Option that will add logarithmic range of // pooling sizes containing [min, max] values. func WithLogSizeRange(min, max int) Option { return func(c Config) { pmath.LogarithmicRange(min, max, func(n int) { c.AddSize(n) }) } } // WithSize returns an Option that will add given pooling size to the pool. func WithSize(n int) Option { return func(c Config) { c.AddSize(n) } } func WithSizeMapping(sz func(int) int) Option { return func(c Config) { c.SetSizeMapping(sz) } } func WithLogSizeMapping() Option { return WithSizeMapping(pmath.CeilToPowerOfTwo) } func WithIdentitySizeMapping() Option { return WithSizeMapping(pmath.Identity) }