Macro frame_support::decl_event
source · macro_rules! decl_event { ( $(#[$attr:meta])* pub enum Event<$evt_generic_param:ident $(, $instance:ident $(: $instantiable:ident)? $( = $event_default_instance:path)? )?> where $( $tt:tt )* ) => { ... }; ( $(#[$attr:meta])* pub enum Event { $( $events:tt )* } ) => { ... }; }
Expand description
Implement the Event
for a module.
Simple Event Example:
frame_support::decl_event!(
pub enum Event {
Success,
Failure(String),
}
);
Generic Event Example:
trait Config {
type Balance;
type Token;
}
mod event1 {
// Event that specifies the generic parameter explicitly (`Balance`).
frame_support::decl_event!(
pub enum Event<T> where Balance = <T as super::Config>::Balance {
Message(Balance),
}
);
}
mod event2 {
// Event that uses the generic parameter `Balance`.
// If no name for the generic parameter is specified explicitly,
// the name will be taken from the type name of the trait.
frame_support::decl_event!(
pub enum Event<T> where <T as super::Config>::Balance {
Message(Balance),
}
);
}
mod event3 {
// And we even support declaring multiple generic parameters!
frame_support::decl_event!(
pub enum Event<T> where <T as super::Config>::Balance, <T as super::Config>::Token {
Message(Balance, Token),
}
);
}
The syntax for generic events requires the where
.
Generic Event with Instance Example:
trait Config<I: Instance=DefaultInstance> {
type Balance;
type Token;
}
// For module with instances, DefaultInstance is optional
frame_support::decl_event!(
pub enum Event<T, I: Instance = DefaultInstance> where
<T as Config>::Balance,
<T as Config>::Token
{
Message(Balance, Token),
}
);