#[macro_export]
macro_rules! assert_unchecked {
($cond:expr) => (assert_unchecked!($cond,));
($cond:expr, $($arg:tt)*) => ({
#[cfg(debug_assertions)]
{
const unsafe fn __needs_unsafe() {}
__needs_unsafe();
assert!($cond, $($arg)*);
}
#[cfg(not(debug_assertions))]
{
std::hint::assert_unchecked($cond);
}
})
}
const _MACRO_CANNOT_BE_USED_WITHOUT_UNSAFE: () = ();
#[cfg(test)]
#[expect(clippy::undocumented_unsafe_blocks)]
mod test {
mod pass {
#[test]
fn plain() {
unsafe { assert_unchecked!(0 == 0) };
}
#[test]
fn string_literal() {
unsafe { assert_unchecked!(0 == 0, "String literal") };
}
#[test]
fn fmt_string() {
unsafe { assert_unchecked!(0 == 0, "Format str {} {:?}", 123, 456) };
}
}
#[cfg(debug_assertions)]
mod fail {
#[test]
#[should_panic(expected = "assertion failed: 0 == 1")]
fn plain() {
unsafe { assert_unchecked!(0 == 1) };
}
#[test]
#[should_panic(expected = "String literal")]
fn string_literal() {
unsafe { assert_unchecked!(0 == 1, "String literal") };
}
#[test]
#[should_panic(expected = "Format str: 123 456")]
fn fmt_string() {
unsafe { assert_unchecked!(0 == 1, "Format str: {} {:?}", 123, 456) };
}
}
}