macro_rules! wrap_dialog_handler {
($ vis : vis struct $ name : ident ; impl DialogHandler { $ ($ (# [$ attrs_name : meta]) * fn $ method_name : ident (& $ self : ident $ (, $ arg_name : ident : $ arg_type : ty) * $ (,) ?) $ (-> $ return_type : ty) ? { $ ($ body : tt) * }) * }) => { ... };
($ vis : vis struct $ name : ident $ (< $ ($ generic_type : ident : $ first_generic_type_bound : tt $ (+ $ generic_type_bound : tt) *) , + $ (,) ? >) ? { $ ($ field_vis : vis $ field_name : ident : $ field_type : ty) , * $ (,) ? } impl DialogHandler { $ ($ (# [$ attrs_name : meta]) * fn $ method_name : ident (& $ self : ident $ (, $ arg_name : ident : $ arg_type : ty) * $ (,) ?) $ (-> $ return_type : ty) ? { $ ($ body : tt) * }) * }) => { ... };
}Expand description
Implement the WrapDialogHandler trait for the specified struct. You can declare more
members for your struct, and in the impl DialogHandler block you can override default
methods implemented by the ImplDialogHandler trait.
ยงExample
wrap_dialog_handler! {
struct MyDialogHandler {
payload: String,
}
impl DialogHandler {
// ...
}
}
fn make_my_struct() -> DialogHandler {
MyDialogHandler::new("payload".to_string())
}