rune/
debug.rs

1//! Debugging utilities.
2use std::sync::atomic::{AtomicBool, Ordering};
3
4static FLAG: AtomicBool = AtomicBool::new(false);
5
6pub(crate) fn debug_enabled() -> bool {
7    if cfg!(test) { true } else { FLAG.load(Ordering::Acquire) }
8}
9
10pub(crate) fn enable_debug() {
11    FLAG.store(true, Ordering::Release);
12}
13
14pub(crate) fn disable_debug() {
15    FLAG.store(false, Ordering::Release);
16}
17
18macro_rules! debug {
19    ($($arg:tt)*) => {{
20        if crate::debug::debug_enabled() {
21            println!($($arg)*);
22        }
23    }}
24}