Debug
On souhaite écrire une macro similaire à la macro dbg! existante. Pour cela, on pourra utiliser utilement un certain nombre de macros existantes :
file!()etline!()contiennent respectivement le fichier et la ligne courants.stringify!()renvoie la représentation littérale de leur argument, sans l'interpréter, sous la forme d'une&'static str.
- Écrivez une macro
debug!(expression)qui affiche le fichier et la ligne courante, la représentation de l'expression et sa valeur.
fn main() {
println!("Result = {}", 10 + debug!(2*3));
}
affichera
$ cargo run
main.c:17 `2*3` = 6
Result = 16
Attention : si l'expression a un effet de bord, celui-ci ne doit avoir lieu qu'une seule fois :
fn main() {
debug!(println!("foobar"));
}
ne doit afficher "foobar" qu'une fois :
$ cargo run
foobar
main.c:23 `println!("foobar")` = ()