// Package monikernames provides a names.Namer implementation that uses the // github.com/technosophos/moniker package.
package monikernames import ( ) var ( _ names.NamerBuilder = (*Builder)(nil) _ names.Namer = (*Namer)(nil) ) // Builder constructs Namer instances for moniker package that are safe for // concurrent use. type Builder struct{} // New returns a new NamerBuilder that constructs Namer instances for the // moniker package. func () *Builder { return (*Builder)(nil) } // Build implements the names.NamerBuilder interface. func ( *Builder) () names.Namer { return NewNamer(moniker.New()) } // Namer is an adapter for moniker’s Namer type that is safe for concurrent // use. type Namer struct { mu sync.Mutex n moniker.Namer } // NewNamer returns a new names.Namer adapter for the given Namer. func ( moniker.Namer) *Namer { return &Namer{ n: , } } // Name implements the names.Namer interface. func ( *Namer) ( context.Context) (string, error) { .mu.Lock() defer .mu.Unlock() return .n.Name(), nil }