1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#[macro_export] macro_rules! cfg_if { ( $(if #[cfg($($meta:meta),*)] { $($item1:item)* }) else * else { $($item2:item)* } ) => { __cfg_if_items! { () ; $( ( ($($meta),*) ($($item1)*) ), )* ( () ($($item2)*) ), } }; ( if #[cfg($($if_meta:meta),*)] { $($if_item:item)* } $( else if #[cfg($($else_meta:meta),*)] { $($else_item:item)* } )* ) => { __cfg_if_items! { () ; ( ($($if_meta),*) ($($if_item)*) ), $( ( ($($else_meta),*) ($($else_item)*) ), )* ( () () ), } } } #[macro_export] #[doc(hidden)] macro_rules! __cfg_if_items { (($($not:meta,)*) ; ) => {}; (($($not:meta,)*) ; ( ($($meta:meta),*) ($($item:item)*) ), $($rest:tt)*) => { __cfg_if_apply! { cfg(all($($meta,)* not(any($($not),*)))), $($item)* } __cfg_if_items! { ($($not,)* $($meta,)*) ; $($rest)* } } } #[macro_export] #[doc(hidden)] macro_rules! __cfg_if_apply { ($meta:meta, $($item:item)*) => { $(#[$meta] $item)* } }