Macro core::internal_macros::cfg_if
source · macro_rules! cfg_if { ( $( if #[cfg( $i_meta:meta )] { $( $i_tokens:tt )* } ) else+ else { $( $e_tokens:tt )* } ) => { ... }; (@__items ( $( $_:meta , )* ) ; ) => { ... }; ( @__items ( $( $no:meta , )* ) ; (( $( $yes:meta )? ) ( $( $tokens:tt )* )) , $( $rest:tt , )* ) => { ... }; (@__identity $( $tokens:tt )* ) => { ... }; }
Expand description
A macro for defining #[cfg]
if-else statements.
cfg_if
is similar to the if/elif
C preprocessor macro by allowing definition of a cascade
of #[cfg]
cases, emitting the implementation which matches first.
This allows you to conveniently provide a long list #[cfg]
’d blocks of code without having to
rewrite each clause multiple times.
Example
cfg_if! {
if #[cfg(unix)] {
fn foo() { /* unix specific functionality */ }
} else if #[cfg(target_pointer_width = "32")] {
fn foo() { /* non-unix, 32-bit functionality */ }
} else {
fn foo() { /* fallback implementation */ }
}
}
# fn main() {}