Obwohl es Sinn macht, so etwas wie die log
Kiste zu verwenden, wie in DK Antwort erwähnt, ist hier, wie die direkte Äquivalent tun, was Sie gefragt:
// The debug version
#[cfg(feature = "my_debug")]
macro_rules! debug_print {
($($args:expr),*) => { println!($($args),*); }
}
// Non-debug version
#[cfg(not(feature = "my_debug"))]
macro_rules! debug_print {
($($args:expr),*) => {}
}
fn main() {
debug_print!("Debug only {}", 123);
}
Und in Ihrem Cargo.toml
, einen [features]
Abschnitt hinzufügen:
[features]
my_debug = []
Der Ausgang erscheint dann mit cargo run --features my_debug
, und nicht mit einem Klar cargo run
.
Dies kann ein wenig präziser sein, indem Sie das vorhandene 'debug_assertions' Attribut, das Makros steuert, wie' debug_assert! ', Entfernen. Ändern Sie einfach die '# [cfg (feature =" my_debug ")]' Bits in '# [cfg (debug_assertions)]' und legen Sie die Änderung in 'Cargo.toml' ab. Auf diese Weise wird der Debug-Code automatisch für Release-Builds ignoriert! –