Documentation
¶
Overview ¶
Package factory is a generic self-registering registry: register values (or constructors that produce values) under string keys; look them up by key. Solves the "every package re-implements a registry" duplication across kit/predicates, kit/sampling, kit/milestones, kit/mcp, etc.
Two flavours via the same struct shape:
- Registry[T] — instance registry: register a T, retrieve by key.
- Builders[P,T] — constructor registry: register a func(P)(T,error), invoke by key with parameters.
Thread-safe writes; lock-free reads after Freeze() (the common init-once / lookup-many pattern).
Index ¶
- Variables
- type Builder
- type Builders
- func (b *Builders[P, T]) Build(key Key, params P) (T, error)
- func (b *Builders[P, T]) Freeze()
- func (b *Builders[P, T]) Has(key Key) bool
- func (b *Builders[P, T]) Keys() []Key
- func (b *Builders[P, T]) MustRegister(key Key, fn Builder[P, T])
- func (b *Builders[P, T]) Register(key Key, fn Builder[P, T]) error
- type Key
- type Registry
Constants ¶
This section is empty.
Variables ¶
var ( ErrDuplicate = errors.New("factory: key already registered") ErrFrozen = errors.New("factory: registry is frozen") ErrNotFound = errors.New("factory: key not found") )
Errors surfaced by the registries.
Functions ¶
This section is empty.
Types ¶
type Builders ¶
type Builders[P, T any] struct { // contains filtered or unexported fields }
Builders stores constructor functions keyed by string. Use when the produced value depends on caller-supplied parameters.
func NewBuilders ¶
NewBuilders constructs an empty Builders registry.
func (*Builders[P, T]) Freeze ¶
func (b *Builders[P, T]) Freeze()
Freeze disables further registration.
func (*Builders[P, T]) MustRegister ¶
MustRegister panics on error.
type Registry ¶
type Registry[T any] struct { // contains filtered or unexported fields }
Registry stores values of T keyed by string.
func (*Registry[T]) Freeze ¶
func (r *Registry[T]) Freeze()
Freeze disables further registration; subsequent Get calls bypass the lock entirely. Idempotent.
func (*Registry[T]) MustRegister ¶
MustRegister panics on error. For init-time use.