//! Macros to ease conditional code based on enabled features. // Depending on the features not all macros are used. #![allow(unused_macros)] /// The `os-poll` feature is enabled. macro_rules! cfg_os_poll { ($($item:item)*) => { $( #[cfg(feature = "os-poll")] #[cfg_attr(docsrs, doc(cfg(feature = "os-poll")))] $item )* } } /// The `os-poll` feature is disabled. macro_rules! cfg_not_os_poll { ($($item:item)*) => { $( #[cfg(not(feature = "os-poll"))] $item )* } } /// The `os-ext` feature is enabled. macro_rules! cfg_os_ext { ($($item:item)*) => { $( #[cfg(feature = "os-ext")] #[cfg_attr(docsrs, doc(cfg(feature = "os-ext")))] $item )* } } /// The `net` feature is enabled. macro_rules! cfg_net { ($($item:item)*) => { $( #[cfg(feature = "net")] #[cfg_attr(docsrs, doc(cfg(feature = "net")))] $item )* } } /// One of the features enabled that needs `IoSource`. That is `net` or `os-ext` /// on Unix (for `pipe`). macro_rules! cfg_io_source { ($($item:item)*) => { $( #[cfg(any(feature = "net", all(unix, feature = "os-ext")))] #[cfg_attr(docsrs, doc(cfg(any(feature = "net", all(unix, feature = "os-ext")))))] $item )* } } /// The `os-ext` feature is enabled, or one of the features that need `os-ext`. macro_rules! cfg_any_os_ext { ($($item:item)*) => { $( #[cfg(any(feature = "os-ext", feature = "net"))] #[cfg_attr(docsrs, doc(cfg(any(feature = "os-ext", feature = "net"))))] $item )* } } macro_rules! trace { ($($t:tt)*) => { log!(trace, $($t)*) } } macro_rules! warn { ($($t:tt)*) => { log!(warn, $($t)*) } } macro_rules! error { ($($t:tt)*) => { log!(error, $($t)*) } } macro_rules! log { ($level: ident, $($t:tt)*) => { #[cfg(feature = "log")] { log::$level!($($t)*) } // Silence unused variables warnings. #[cfg(not(feature = "log"))] { if false { let _ = ( $($t)* ); } } } }