Debug

On souhaite écrire une macro similaire à la macro dbg! existante. Pour cela, on pourra utiliser utilement un certain nombre de macros existantes :

  • file!() et line!() 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.
  1. É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")` = ()