use assert_matches::assert_matches;
use error_fatality::{Fatality, Split};
use thiserror::Error;
#[derive(Debug, Error)]
#[error("We tried")]
struct Fatal;
#[derive(Debug, Error)]
#[error("Get a dinosaur bandaid")]
struct Bobo;
#[derive(Debug, Error, Fatality, Split)]
enum Kaboom {
#[error(transparent)]
#[fatal(forward)]
Iffy(Fatal),
#[error(transparent)]
#[fatal(false)]
Bobo(Bobo),
}
fn iffy() -> Result<(), Kaboom> {
Err(Fatal)?
}
fn bobo() -> Result<(), Kaboom> {
Err(Bobo)?
}
fn main() {
if let Err(fatal) = iffy() {
assert_matches!(fatal, Kaboom::Iffy(_));
}
if let Err(bobo) = bobo() {
assert_matches!(bobo, Kaboom::Bobo(_));
}
}