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