Attribute Macro enum_dispatch::enum_dispatch

source ·
#[enum_dispatch]
Expand description

Annotating a trait or enum definition with an #[enum_dispatch] attribute will register it with the enum_dispatch library, allowing it to be used to generate impl blocks elsewhere.

Annotating a trait or enum definition with an #[enum_dispatch(BlockName)] attribute will generate an enum dispatch implementation for the specified trait/enum pair, as well as adding an impl of std::convert::From for each variant. When annotating a trait, BlockName should be the name of a registered enum. When annotating an enum, BlockName should be the name of a registered trait.

An annotated enum should have variants that are simply the names of types imported to the current scope. To force individual variants to use a custom name when expanded, each variant can also take the form of a normal tuple-style enum variant with a single field.