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