#![allow(dead_code)]
#![allow(unused_macros)]
#![allow(unused_imports)]
pub(crate) struct NumAssert<const L: usize, const R: usize>;
#[allow(clippy::erasing_op)]
impl<const L: usize, const R: usize> NumAssert<L, R> {
pub const LEQ: usize = R - L;
pub const LT: usize = R - L - 1;
}
macro_rules! num_assert_leq {
($a:expr, $b:expr) => {
#[allow(path_statements)]
#[allow(clippy::no_effect)]
{
$crate::util::NumAssert::<{ $a }, { $b }>::LEQ;
}
};
}
macro_rules! num_assert_lt {
($a:expr, $b:expr) => {
#[allow(path_statements)]
#[allow(clippy::no_effect)]
{
$crate::util::NumAssert::<{ $a }, { $b }>::LT;
}
};
}
pub(crate) use num_assert_leq;
pub(crate) use num_assert_lt;
macro_rules! debug_checked_assume {
($ex:expr) => {
if (!$ex) {
debug_assert!(false);
::std::hint::unreachable_unchecked();
}
};
}
macro_rules! debug_checked_unreachable {
() => {
debug_assert!(false);
::std::hint::unreachable_unchecked();
};
}
pub(crate) use debug_checked_assume;
pub(crate) use debug_checked_unreachable;