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