macro_rules! wrap_context_menu_handler {
($ vis : vis struct $ name : ident ; impl ContextMenuHandler { $ ($ (# [$ 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 ContextMenuHandler { $ ($ (# [$ attrs_name : meta]) * fn $ method_name : ident (& $ self : ident $ (, $ arg_name : ident : $ arg_type : ty) * $ (,) ?) $ (-> $ return_type : ty) ? { $ ($ body : tt) * }) * }) => { ... };
}Expand description
Implement the WrapContextMenuHandler trait for the specified struct. You can declare more
members for your struct, and in the impl ContextMenuHandler block you can override default
methods implemented by the ImplContextMenuHandler trait.
ยงExample
wrap_context_menu_handler! {
struct MyContextMenuHandler {
payload: String,
}
impl ContextMenuHandler {
// ...
}
}
fn make_my_struct() -> ContextMenuHandler {
MyContextMenuHandler::new("payload".to_string())
}