blargle 0.1.0

Provides debugging macros which resolves to compiler errors for release builds
Documentation
/// Signifies that the surrounding code is placeholder code and not meant for production.
///
/// For debug builds, this macro resolves to nothing.  For release builds, it generates a compiler error.
#[macro_export]
macro_rules! placeholder {
    () => {
        #[cfg(not(debug_assertions))]
        compile_error!("Placeholder left in code");
    };
}

/// Debug-only version of `std::println`.
///
/// For debug builds, this macro resolves to `std::println!`.  For release builds, it generates a compiler
/// error.
#[macro_export]
macro_rules! println {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        std::println!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `std::print`.
///
/// For debug builds, this macro resolves to `std::print!`.  For release builds, it generates a compiler
/// error.
#[macro_export]
macro_rules! print {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        std::print!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `std::eprintln`.
///
/// For debug builds, this macro resolves to `std::eprintln!`.  For release builds, it generates a compiler
/// error.
#[macro_export]
macro_rules! eprintln {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        std::eprintln!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `std::eprint`.
///
/// For debug builds, this macro resolves to `std::eprint!`.  For release builds, it generates a compiler
/// error.
#[macro_export]
macro_rules! eprint {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        std::eprint!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `std::dbg`.
///
/// For debug builds, this macro resolves to `std::dbg!`.  For release builds, it generates a compiler
/// error.
#[macro_export]
macro_rules! dbg {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        std::dbg!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `log::error`.
///
/// For debug builds, this macro resolves to `log::error!`.  For release builds, it generates a compiler
/// error.
#[cfg(feature = "log")]
#[macro_export]
macro_rules! log_error {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        log::error!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `log::warn`.
///
/// For debug builds, this macro resolves to `log::warn!`.  For release builds, it generates a compiler
/// error.
#[cfg(feature = "log")]
#[macro_export]
macro_rules! log_warn {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        log::warn!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `log::info`.
///
/// For debug builds, this macro resolves to `log::info!`.  For release builds, it generates a compiler
/// error.
#[cfg(feature = "log")]
#[macro_export]
macro_rules! log_info {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        log::info!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `log::debug`.
///
/// For debug builds, this macro resolves to `log::debug!`.  For release builds, it generates a compiler
/// error.
#[cfg(feature = "log")]
#[macro_export]
macro_rules! log_debug {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        log::debug!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}

/// Debug-only version of `log::trace`.
///
/// For debug builds, this macro resolves to `log::trace!`.  For release builds, it generates a compiler
/// error.
#[cfg(feature = "log")]
#[macro_export]
macro_rules! log_trace {
    ($($args:tt)*) => {
        #[cfg(debug_assertions)]
        log::trace!($($args)*);
        #[cfg(not(debug_assertions))]
        compile_error!("Blargle left in code");
    };
}