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")` = ()