Avec le pré-processeur C, il est courant de le faire,
#if defined(NDEBUG)
// release build
#endif
#if defined(DEBUG)
// debug build
#endif
Les équivalents bruts du fret sont:
cargo build --release
Pour publication.cargo build
Pour le débogage.Comment utiliser l'attribut #[cfg(...)]
ou la macro cfg!(...)
de Rust pour faire quelque chose de similaire?
Je comprends que le pré-processeur de Rust ne fonctionne pas comme celui de C. J'ai vérifié la documentation et cette page répertorie certains attributs . (en supposant que cette liste est complète)
debug_assertions
A pu être vérifié, mais il peut être trompeur lorsqu'il est utilisé pour vérifier le cas de débogage plus général.
Je ne sais pas si cette question devrait être liée au fret ou non.
Vous pouvez utiliser debug_assertions
Comme indicateur de configuration approprié. Il fonctionne avec les attributs #[cfg(...)]
et la macro cfg!
:
#[cfg(debug_assertions)]
fn example() {
println!("Debugging enabled");
}
#[cfg(not(debug_assertions))]
fn example() {
println!("Debugging disabled");
}
fn main() {
if cfg!(debug_assertions) {
println!("Debugging enabled");
} else {
println!("Debugging disabled");
}
#[cfg(debug_assertions)]
println!("Debugging enabled");
#[cfg(not(debug_assertions))]
println!("Debugging disabled");
example();
}
Cet indicateur de configuration a été nommé comme un moyen correct de le faire dans cette discussion . Il n'y a pas de condition intégrée plus appropriée pour l'instant.
De la référence :
debug_assertions
- Activé par défaut lors de la compilation sans optimisations. Cela peut être utilisé pour activer du code de débogage supplémentaire en développement mais pas en production. Par exemple, il contrôle le comportement de la macrodebug_assert!
De la bibliothèque standard.
Une alternative, un peu plus compliquée, consiste à utiliser #[cfg(feature = "debug")]
et à créer un script de construction qui active une fonction de "débogage" pour votre caisse, comme indiqué ici .