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)*
    }
}