#[macro_export]
macro_rules! debug_assert {
($cond:expr $(,)?) => {
if cfg!(debug_assertions) && !$cond {
::core::panic!(
"DEBUG ASSERT: assertion failed: {}",
::core::stringify!($cond),
);
}
};
($cond:expr, $($arg:tt)+) => {
if cfg!(debug_assertions) && !$cond {
::core::panic!("DEBUG ASSERT: {}", ::core::format_args!($($arg)+));
}
};
}
#[macro_export]
macro_rules! debug_assert_eq {
($left:expr, $right:expr $(,)?) => {
match (&$left, &$right) {
(left, right) => {
if cfg!(debug_assertions) && *left != *right {
::core::panic!(
"DEBUG ASSERT: assertion `left == right` failed\n left: {left:?}\n right: {right:?}",
);
}
}
}
};
($left:expr, $right:expr, $($arg:tt)+) => {
match (&$left, &$right) {
(left, right) => {
if cfg!(debug_assertions) && *left != *right {
::core::panic!(
"DEBUG ASSERT: assertion `left == right` failed: {}\n left: {left:?}\n right: {right:?}",
::core::format_args!($($arg)+),
);
}
}
}
};
}
#[macro_export]
macro_rules! debug_panic {
($($arg:tt)+) => {
if cfg!(debug_assertions) {
::core::panic!("DEBUG PANIC: {}", ::core::format_args!($($arg)+));
}
};
}