Attribute Macro frame_support::pallet_macros::composite_enum
source · #[composite_enum]Expand description
Allows defining an enum that gets composed as an aggregate enum by construct_runtime.
The #[pallet::composite_enum] attribute allows you to define an enum that gets
composed as an aggregate enum by construct_runtime. This is similar in principle with
frame_support_procedural::event and frame_support_procedural::error.
The attribute currently only supports enum definitions, and identifiers that are named
FreezeReason, HoldReason, LockId or SlashReason. Arbitrary identifiers for the
enum are not supported. The aggregate enum generated by
frame_support::construct_runtime will have the name of RuntimeFreezeReason,
RuntimeHoldReason, RuntimeLockId and RuntimeSlashReason respectively.
NOTE: The aggregate enum generated by construct_runtime generates a conversion
function from the pallet enum to the aggregate enum, and automatically derives the
following traits:
Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, MaxEncodedLen, TypeInfo,
RuntimeDebugFor ease of usage, when no #[derive] attributes are found for the enum under
#[pallet::composite_enum], the aforementioned traits are
automatically derived for it. The inverse is also true: if there are any #[derive]
attributes found for the enum, then no traits will automatically be derived for it.
e.g, defining HoldReason in a pallet
#[frame_support::pallet]
mod pallet {
#[pallet::pallet]
pub struct Pallet<T>(_);
#[pallet::composite_enum]
pub enum HoldReason {
/// The NIS Pallet has reserved it for a non-fungible receipt.
#[codec(index = 0)]
SomeHoldReason,
#[codec(index = 1)]
SomeOtherHoldReason,
}
}
---
Documentation for this macro can be found at `frame_support::pallet_macros::composite_enum`.