#[macro_export]
macro_rules! nice_log {
($($args:tt)*) => (
$crate::log::info!($($args)*)
);
}
#[doc(inline)]
pub use nice_log;
#[macro_export]
macro_rules! nice_warn {
($($args:tt)*) => (
$crate::log::warn!($($args)*)
);
}
#[doc(inline)]
pub use nice_warn;
#[macro_export]
macro_rules! nice_error {
($($args:tt)*) => (
$crate::log::error!($($args)*)
);
}
#[doc(inline)]
pub use nice_error;
#[macro_export]
macro_rules! nice_trace {
($($args:tt)*) => (
$crate::util::permit_alloc(|| $crate::log::trace!($($args)*))
);
}
#[doc(inline)]
pub use nice_trace;
#[macro_export]
macro_rules! nice_dbg {
() => {
$crate::util::permit_alloc(|| $crate::log::debug!(""));
};
($val:expr $(,)?) => {
match $val {
tmp => {
$crate::util::permit_alloc(|| $crate::log::debug!("{} = {:#?}", stringify!($val), &tmp));
tmp
}
}
};
($($val:expr),+ $(,)?) => { ($($crate::nice_dbg!($val)),+,) };
}
#[doc(inline)]
pub use nice_dbg;
#[macro_export]
macro_rules! nice_debug_assert {
($cond:expr $(,)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert!($cond);
} else if cfg!(debug_assertions) && !$cond {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($cond))));
}
);
($cond:expr, $format:expr $(, $($args:tt)*)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert!($cond, $format, $($($args)*)?);
} else if cfg!(debug_assertions) && !$cond {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($cond), ", ", $format), $($($args)*)?));
}
);
}
#[doc(inline)]
pub use nice_debug_assert;
#[macro_export]
macro_rules! nice_debug_assert_failure {
() => (
if cfg!(test) {
debug_assert!(false, "Debug assertion failed");
} else if cfg!(debug_assertions) {
$crate::util::permit_alloc(|| $crate::log::warn!("Debug assertion failed"));
}
);
($format:expr $(, $($args:tt)*)?) => (
if cfg!(test) {
debug_assert!(false, concat!("Debug assertion failed: ", $format), $($($args)*)?);
} else if cfg!(debug_assertions) {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", $format), $($($args)*)?));
}
);
}
#[doc(inline)]
pub use nice_debug_assert_failure;
#[macro_export]
macro_rules! nice_debug_assert_eq {
($left:expr, $right:expr $(,)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert_eq!($left, $right);
} else if cfg!(debug_assertions) && $left != $right {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($left), " != ", stringify!($right))));
}
);
($left:expr, $right:expr, $format:expr $(, $($args:tt)*)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert_eq!($left, $right, $format, $($($args)*)?);
} else if cfg!(debug_assertions) && $left != $right {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($left), " != ", stringify!($right), ", ", $format), $($($args)*)?));
}
);
}
#[doc(inline)]
pub use nice_debug_assert_eq;
#[macro_export]
macro_rules! nice_debug_assert_ne {
($left:expr, $right:expr $(,)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert_ne!($left, $right);
} else if cfg!(debug_assertions) && $left == $right {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($left), " == ", stringify!($right))));
}
);
($left:expr, $right:expr, $format:expr $(, $($args:tt)*)?) => (
#[allow(clippy::neg_cmp_op_on_partial_ord)]
if cfg!(test) {
debug_assert_ne!($left, $right, $format, $($($args)*)?);
} else if cfg!(debug_assertions) && $left == $right {
$crate::util::permit_alloc(|| $crate::log::warn!(concat!("Debug assertion failed: ", stringify!($left), " == ", stringify!($right), ", ", $format), $($($args)*)?));
}
);
}
#[doc(inline)]
pub use nice_debug_assert_ne;