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