1
0
Fork 0

Add a nih_dbg!() macro analog for dbg!()

This commit is contained in:
Robbert van der Helm 2022-04-26 15:43:24 +02:00
parent 482c834450
commit abe5a12461
2 changed files with 22 additions and 0 deletions

View file

@ -24,6 +24,27 @@ macro_rules! nih_trace {
);
}
/// Analogues to the `dbg!()` macro, but respecting the `NIH_LOG` environment variable and with all
/// of the same logging features as the other `nih_*!()` macros. Like the `nih_debug_assert*!()`
/// macros, this is only shown when compiling in debug mode, but the macro will still return the
/// value in non-debug modes.
#[macro_export]
macro_rules! nih_dbg {
() => {
$crate::util::permit_alloc(|| $crate::log::debug!(""));
};
($val:expr $(,)?) => {
// Match here acts as a let-binding: https://stackoverflow.com/questions/48732263/why-is-rusts-assert-eq-implemented-using-a-match/48732525#48732525
match $val {
tmp => {
$crate::util::permit_alloc(|| $crate::log::debug!("{} = {:#?}", stringify!($val), &tmp));
tmp
}
}
};
($($val:expr),+ $(,)?) => { ($($crate::nih_dbg!($val)),+,) };
}
/// A `debug_assert!()` analogue that prints the error with line number information instead of
/// panicking.
///

View file

@ -1,4 +1,5 @@
// Re-export the macros, derive macros are already re-exported ferom their respectivem odules
pub use crate::nih_dbg;
pub use crate::nih_debug_assert;
pub use crate::nih_debug_assert_eq;
pub use crate::nih_debug_assert_failure;