Revision control

Copy as Markdown

Other Tools

#![cfg_attr(thiserror_nightly_testing, feature(error_generic_member_access))]
#[cfg(thiserror_nightly_testing)]
pub mod structs {
use std::backtrace::Backtrace;
use thiserror::Error;
#[derive(Error, Debug)]
#[error("...")]
pub struct OptSourceNoBacktrace {
#[source]
pub source: Option<anyhow::Error>,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct OptSourceAlwaysBacktrace {
#[source]
pub source: Option<anyhow::Error>,
pub backtrace: Backtrace,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct NoSourceOptBacktrace {
#[backtrace]
pub backtrace: Option<Backtrace>,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct AlwaysSourceOptBacktrace {
pub source: anyhow::Error,
#[backtrace]
pub backtrace: Option<Backtrace>,
}
#[derive(Error, Debug)]
#[error("...")]
pub struct OptSourceOptBacktrace {
#[source]
pub source: Option<anyhow::Error>,
#[backtrace]
pub backtrace: Option<Backtrace>,
}
}
#[cfg(thiserror_nightly_testing)]
pub mod enums {
use std::backtrace::Backtrace;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum OptSourceNoBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
},
}
#[derive(Error, Debug)]
pub enum OptSourceAlwaysBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
backtrace: Backtrace,
},
}
#[derive(Error, Debug)]
pub enum NoSourceOptBacktrace {
#[error("...")]
Test {
#[backtrace]
backtrace: Option<Backtrace>,
},
}
#[derive(Error, Debug)]
pub enum AlwaysSourceOptBacktrace {
#[error("...")]
Test {
source: anyhow::Error,
#[backtrace]
backtrace: Option<Backtrace>,
},
}
#[derive(Error, Debug)]
pub enum OptSourceOptBacktrace {
#[error("...")]
Test {
#[source]
source: Option<anyhow::Error>,
#[backtrace]
backtrace: Option<Backtrace>,
},
}
}
#[test]
#[cfg_attr(
not(thiserror_nightly_testing),
ignore = "requires `--cfg=thiserror_nightly_testing`"
)]
fn test_option() {}