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