Traits API
Main trait groups
- collection-style helpers:
HasValues,HasNames,HasOptions - lookup helpers:
HasNameLookup,HasNameMap,HasValueMap - behavior helpers:
Comparable,HasDescription,HasLabel
These traits are intentionally small and composable. Use only the traits that match the behavior your enum really needs.
Compatibility matrix
| Trait | Enum requirement | Public methods |
|---|---|---|
HasNames
|
any enum | names()
|
HasValues
|
backed enum | values()
|
HasOptions
|
backed enum | options()
|
HasNameLookup
|
any enum | tryFromName()
, fromName()
, hasName()
|
HasNameMap
|
any enum | nameMap()
|
HasValueMap
|
backed enum | valueMap()
|
Comparable
|
any enum | is()
, isNot()
, in()
, notIn()
|
HasDescription
|
any enum | description()
|
HasLabel
|
any enum | label()
|
Collection traits
HasNames
Adds names()
to any enum.
HasValues
Adds values()
to backed enums.
HasOptions
Adds a name => value
option array for backed enums.
Lookup traits
HasNameLookup
Adds tryFromName()
, fromName()
, and hasName()
.
HasNameMap
and HasValueMap
Add fast reusable lookup arrays for case names and backed values.
Behavior traits
Comparable
Adds explicit comparison helpers such as is()
and in()
.
HasDescription
Adds a readable description based on the case name.
HasLabel
Adds a default label()
implementation. This can be useful as a fallback,
but user-facing enums often benefit from a custom label implementation instead.
Trait composition example
enum Status: string
{
use HasValues;
use HasNames;
use HasOptions;
use HasNameLookup;
use Comparable;
}