anyhow/
backtrace.rs

1#[cfg(feature = "std")]
2pub(crate) use std::backtrace::Backtrace;
3
4#[cfg(not(feature = "std"))]
5pub(crate) enum Backtrace {}
6
7#[cfg(feature = "std")]
8macro_rules! backtrace {
9    () => {
10        Some(std::backtrace::Backtrace::capture())
11    };
12}
13
14#[cfg(not(feature = "std"))]
15macro_rules! backtrace {
16    () => {
17        None
18    };
19}
20
21#[cfg(error_generic_member_access)]
22macro_rules! backtrace_if_absent {
23    ($err:expr) => {
24        match $crate::nightly::request_ref_backtrace($err as &dyn core::error::Error) {
25            Some(_) => None,
26            None => backtrace!(),
27        }
28    };
29}
30
31#[cfg(all(not(error_generic_member_access), feature = "std"))]
32macro_rules! backtrace_if_absent {
33    ($err:expr) => {
34        backtrace!()
35    };
36}
37
38#[cfg(all(not(anyhow_no_core_error), not(feature = "std")))]
39macro_rules! backtrace_if_absent {
40    ($err:expr) => {
41        None
42    };
43}
44
45fn _assert_send_sync() {
46    fn assert<T: Send + Sync>() {}
47    assert::<Backtrace>();
48}