Déboguer les variables avec les placeholders de "println!"

Ce guide est actuellement en cours de rédaction : si quelque chose vous semble mal expliqué ou peu clair, n'hésitez pas à me faire un retour sur github ou par mail

Une nouvelle feuille sera publiée chaque semaine : si vous souhaitez être averti·e des nouveaux contenus, abonnez-vous par mail ou suivez-moi sur twitter

afficher une vartaible avec println! et ses formatteurs

println! permet d'afficher une variable à l'aide de différents formatteurs tels que {}, {:?} , {:#?}, {:p} et d'autres :

// pour une variable primitive atomique, "{}" est suffisant:
let x = "hello world";
println!("{}", x);

// pour les types plus complexes, un formatteur est nécessaire
let array = [1, 2, 3];

// ceci ne fonctionnera pas
println!("this is my variable : {}", array);
// error[E0277]: `[{integer}; 3]` doesn't implement `std::fmt::Display`

// ceci fonctionne
println!("this is my variable : {:?}", array);
// affiche: "this is my variable : [1, 2, 3]"

// pour encore plus de lisibilité :
println!("this is my variable : {:#?}", array);
// affiche :
// this is my variable : [
//    1,
//    2,
//    3
// ]

// affiche l'adresse mémoire, par exemple `0x7ffee458816c`
// L'éperluette signifie "donne moi l'adresse mémoire de cette variable"
// Mais Rust affiche par défaut la valeur au lieu de l'adresse dans println!,
// on doit donc ajouter le formateur `:p` pour voir réellement l'adresse.
println!("{:p}", &array);

// affiche une valeur sous forme de séquences de bits, ici `11`.
println!("{:b}", array[2]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

Connaître le type d'une variable

[TODO : indiquer qu'on peut connaître le type d'une variable en plantant le compilateur en affiliant volontaire un type erroné]