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}