| #[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 |
| }; |
| } |