debug_assert |
Assertion déboguage |
|---|---|
| Rust | |
Syntaxe
|
macro_rules! debug_assert { ($($arg:tt)*) => { ... }; } |
Description
Cette macro permet de faire une vérification conditionnelle uniquement en mode debug, en s'assurant qu'une expression booléenne est vraie.
Remarques
Confirme qu'une expression booléenne est vraie à l'exécution.
La macro panic! sera invoquée si l'expression fournie ne peut pas être évaluée comme vraie à l'exécution.
Comme assert!, cette macro existe également en version secondaire, permettant de fournir un message panic personnalisé.
Utilisations
Contrairement à assert!, les instructions debug_assert! ne sont activées par défaut que dans les builds non optimisés. Une build optimisée n'exécutera pas d'instructions debug_assert! à moins que -C debug-assertions ne soit passé au compilateur. Cela rend debug_assert! utile pour les vérifications trop coûteuses pour être présentes dans une build de publication, mais qui peuvent s'avérer utiles en développement. Le résultat de l'extension de debug_assert! est toujours vérifié.
Une assertion non vérifiée permet à un programme dans un état incohérent de continuer à s'exécuter, ce qui peut avoir des conséquences inattendues, mais n'introduit pas d'insécurité tant que cela ne se produit que dans du code sûr. Cependant, le coût en performance des assertions n'est généralement pas mesurable. Le remplacement d'assert! par debug_assert! n'est donc recommandé qu'après un profilage approfondi et, surtout, uniquement dans du code sûr !
Exemples
- // le message de panique pour ces assertions est la valeur stringifiée de l'expression donnée.
- debug_assert!(true);
-
- fn some_expensive_computation() -> bool { true } // une fonction très simple
- debug_assert!(some_expensive_computation());
-
- // affirmer avec un message personnalisé
- let x = true;
- debug_assert!(x, "x n'était pas vrai !");
-
- let a = 3; let b = 27;
- debug_assert!(a + b == 30, "a = {}, b = {}", a, b);