Это можно сделать с помощью условной компиляции:
macro_rules! println {
($($rest:tt)*) => {
#[cfg(debug_assertions)]
std::println!($($rest)*)
}
}
Это печатается, только если debug_assertions
включены. По умолчанию они включены в отладочных сборках и отключены в сборках выпуска. В качестве альтернативы вы можете использовать функцию, которую можно переключать отдельно:
macro_rules! println {
($($rest:tt)*) => {
#[cfg(feature = "stdout")]
std::println!($($rest)*)
}
}
# Cargo.toml
[features]
stdout = []
Если вам нужна переменная среды, вы можете сделать что-то вроде
macro_rules! println {
($($rest:tt)*) => {
if std::env::var("DEBUG").is_ok() {
std::println!($($rest)*);
}
}
}