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