[go: up one dir, main page]

backtrace 0.1.0

A library to acquire a stack trace (backtrace) at runtime in a Rust program.

macro_rules! cascade {
    ($(
        if #[cfg($($meta:meta),*)] { $($it:item)* }
    ) else * else {
        $($it2:item)*
    }) => {
        __items! {
            () ;
            $( ( ($($meta),*) ($($it)*) ), )*
            ( () ($($it2)*) ),
        }
    }
}

macro_rules! __items {
    (($($not:meta,)*) ; ) => {};
    (($($not:meta,)*) ; ( ($($m:meta),*) ($($it:item)*) ), $($rest:tt)*) => {
        __apply! { cfg(all($($m,)* not(any($($not),*)))), $($it)* }
        __items! { ($($not,)* $($m,)*) ; $($rest)* }
    }
}

macro_rules! __apply {
    ($m:meta, $($it:item)*) => {
        $(#[$m] $it)*
    }
}