#[macro_export]
macro_rules! bail {
($msg:literal $(,)?) => {
return $crate::__private::Err($crate::__wallee!($msg))
};
($err:expr $(,)?) => {
return $crate::__private::Err($crate::__wallee!($err))
};
($fmt:expr, $($arg:tt)*) => {
return $crate::__private::Err($crate::__wallee!($fmt, $($arg)*))
};
}
#[cfg(doc)]
#[macro_export]
macro_rules! ensure {
($cond:expr $(,)?) => {
if !$cond {
return $crate::__private::Err($crate::Error::msg(
$crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
));
}
};
($cond:expr, $msg:literal $(,)?) => {
if !$cond {
return $crate::__private::Err($crate::__wallee!($msg));
}
};
($cond:expr, $err:expr $(,)?) => {
if !$cond {
return $crate::__private::Err($crate::__wallee!($err));
}
};
($cond:expr, $fmt:expr, $($arg:tt)*) => {
if !$cond {
return $crate::__private::Err($crate::__wallee!($fmt, $($arg)*));
}
};
}
#[cfg(not(doc))]
#[macro_export]
macro_rules! ensure {
($($tt:tt)*) => {
$crate::__parse_ensure!(
0
()
($($tt)*)
(~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~)
{()}
($($tt)*)
$($tt)*
)
};
}
#[macro_export]
macro_rules! wallee {
($msg:literal $(,)?) => {
$crate::__private::must_use({
let error = $crate::__private::format_err($crate::__private::format_args!($msg));
error
})
};
($fmt:literal, $($arg:tt)*) => {
$crate::Error::msg($crate::__private::format!($fmt, $($arg)*))
};
($err:expr $(,)?) => {
$crate::__private::must_use({
use $crate::__private::kind::*;
let error = match $err {
error => (&error).wallee_kind().make(error),
};
error
})
};
($err:expr, $context:literal $(,)?) => {
$crate::__private::must_use({
use $crate::__private::kind::*;
let error = match $err {
error => (&error).wallee_kind().make(error),
};
$crate::__private::format_context(error, $crate::__private::format_args!($context))
})
};
($err:expr, $fmt:literal, $($arg:tt)*) => {{
use $crate::__private::kind::*;
let error = match $err {
error => (&error).wallee_kind().make(error),
};
error.context($crate::__private::format!($fmt, $($arg)*))
}};
($err:expr, $context:expr $(,)?) => {
$crate::__private::must_use({
use $crate::__private::kind::*;
let error = match $err {
error => (&error).wallee_kind().make(error),
};
error.context($context)
})
}
}
#[doc(hidden)]
#[macro_export]
macro_rules! __wallee {
($msg:literal $(,)?) => ({
let error = $crate::__private::format_err($crate::__private::format_args!($msg));
error
});
($err:expr $(,)?) => ({
use $crate::__private::kind::*;
let error = match $err {
error => (&error).wallee_kind().make(error),
};
error
});
($fmt:expr, $($arg:tt)*) => {
$crate::Error::msg($crate::__private::format!($fmt, $($arg)*))
};
}