1 | //! Macros to ease conditional code based on enabled features. |
2 | |
3 | // Depending on the features not all macros are used. |
4 | #![allow (unused_macros)] |
5 | |
6 | /// The `os-poll` feature is enabled. |
7 | macro_rules! cfg_os_poll { |
8 | ($($item:item)*) => { |
9 | $( |
10 | #[cfg(feature = "os-poll" )] |
11 | #[cfg_attr(docsrs, doc(cfg(feature = "os-poll" )))] |
12 | $item |
13 | )* |
14 | } |
15 | } |
16 | |
17 | /// The `os-poll` feature is disabled. |
18 | macro_rules! cfg_not_os_poll { |
19 | ($($item:item)*) => { |
20 | $( |
21 | #[cfg(not(feature = "os-poll" ))] |
22 | $item |
23 | )* |
24 | } |
25 | } |
26 | |
27 | /// The `os-ext` feature is enabled. |
28 | macro_rules! cfg_os_ext { |
29 | ($($item:item)*) => { |
30 | $( |
31 | #[cfg(feature = "os-ext" )] |
32 | #[cfg_attr(docsrs, doc(cfg(feature = "os-ext" )))] |
33 | $item |
34 | )* |
35 | } |
36 | } |
37 | |
38 | /// The `net` feature is enabled. |
39 | macro_rules! cfg_net { |
40 | ($($item:item)*) => { |
41 | $( |
42 | #[cfg(feature = "net" )] |
43 | #[cfg_attr(docsrs, doc(cfg(feature = "net" )))] |
44 | $item |
45 | )* |
46 | } |
47 | } |
48 | |
49 | /// One of the features enabled that needs `IoSource`. That is `net` or `os-ext` |
50 | /// on Unix (for `pipe`). |
51 | macro_rules! cfg_io_source { |
52 | ($($item:item)*) => { |
53 | $( |
54 | #[cfg(any(feature = "net" , all(unix, feature = "os-ext" )))] |
55 | #[cfg_attr(docsrs, doc(cfg(any(feature = "net" , all(unix, feature = "os-ext" )))))] |
56 | $item |
57 | )* |
58 | } |
59 | } |
60 | |
61 | /// The `os-ext` feature is enabled, or one of the features that need `os-ext`. |
62 | macro_rules! cfg_any_os_ext { |
63 | ($($item:item)*) => { |
64 | $( |
65 | #[cfg(any(feature = "os-ext" , feature = "net" ))] |
66 | #[cfg_attr(docsrs, doc(cfg(any(feature = "os-ext" , feature = "net" ))))] |
67 | $item |
68 | )* |
69 | } |
70 | } |
71 | |
72 | macro_rules! trace { |
73 | ($($t:tt)*) => { |
74 | log!(trace, $($t)*) |
75 | } |
76 | } |
77 | |
78 | macro_rules! warn { |
79 | ($($t:tt)*) => { |
80 | log!(warn, $($t)*) |
81 | } |
82 | } |
83 | |
84 | macro_rules! error { |
85 | ($($t:tt)*) => { |
86 | log!(error, $($t)*) |
87 | } |
88 | } |
89 | |
90 | macro_rules! log { |
91 | ($level: ident, $($t:tt)*) => { |
92 | #[cfg(feature = "log" )] |
93 | { log::$level!($($t)*) } |
94 | // Silence unused variables warnings. |
95 | #[cfg(not(feature = "log" ))] |
96 | { if false { let _ = ( $($t)* ); } } |
97 | } |
98 | } |
99 | |