1 macro_rules! cfg_feature { 2 ( 3 #![$meta:meta] 4 $($item:item)* 5 ) => { 6 $( 7 #[cfg($meta)] 8 #[cfg_attr(docsrs, doc(cfg($meta)))] 9 $item 10 )* 11 } 12 } 13 14 macro_rules! cfg_proto { 15 ($($item:item)*) => { 16 cfg_feature! { 17 #![all( 18 any(feature = "http1", feature = "http2"), 19 any(feature = "client", feature = "server"), 20 )] 21 $($item)* 22 } 23 } 24 } 25 26 cfg_proto! { 27 macro_rules! cfg_client { 28 ($($item:item)*) => { 29 cfg_feature! { 30 #![feature = "client"] 31 $($item)* 32 } 33 } 34 } 35 36 macro_rules! cfg_server { 37 ($($item:item)*) => { 38 cfg_feature! { 39 #![feature = "server"] 40 $($item)* 41 } 42 } 43 } 44 } 45