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
#[cfg(backtrace)] pub(crate) use std::backtrace::Backtrace; #[cfg(not(backtrace))] pub(crate) enum Backtrace {} #[cfg(backtrace)] macro_rules! backtrace { () => { Some(Backtrace::capture()) }; } #[cfg(not(backtrace))] macro_rules! backtrace { () => { None }; } #[cfg(backtrace)] macro_rules! backtrace_if_absent { ($err:expr) => { match $err.backtrace() { Some(_) => None, None => Some(Backtrace::capture()), } }; } #[cfg(all(feature = "std", not(backtrace)))] macro_rules! backtrace_if_absent { ($err:expr) => { None }; }