#[macro_export]
macro_rules! borked{
($message:expr) => {
{
use $crate::{BaseBork, BorkChain};
let e = Box::new(BaseBork{name: $message.into(), cause: None});
return Err(e);
}
};
($message:expr, $cause:expr) => {
{
use $crate::{BorkChain, BaseBork, BorkWithMsg};
let mut e = BaseBork::msg($message.into());
e.chain($cause);
return Err(e);
}
};
(TY => $new_err:ident) => {
{
use $crate::BorkChain;
let e = $new_err::new().unwrap();
return Err(e);
}
};
(TY => $new_err:ident, $cause:expr) => {
{
use $crate::BorkChain;
let mut e = $new_err::new().unwrap();
e.chain($cause.into());
return Err(e);
}
};
(TY => $new_err:ident, C => $cause:ident, $($field:ident:$val:expr),*) => {
{
use $crate::BorkChain;
let mut e = $new_err::new().unwrap();
e.chain($cause.into());
$( { e.$field = $val.into(); } )*
return Err(e);
}
};
}