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 | |