Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Mode d’emploi avancé de mdBook

Blocs de codes

Cette partie concerne plus particulièrement les lecteurs·trices des livres relatifs au langage Rust (moins ceux·celles de mon livre au sujet de mdBook lui-même).

mdBook permet de disposer d’un outil avec des blocs de codes Rust interactifs riches.

Tous les blocs de codes sont copiables directement ou avec le bouton ad hoc.

Nous pouvons en plus (options disponibles en fonction des paramètres choisis par l’auteur·trice) :

  • les éditer (modifier) en nous plaçant dans le code et en supprimant ou saisissant du code ;
    • un bouton permet de remettre le code dans son état d’origine si besoin ;
  • les compiler (ou obtenir les messages d’avertissement et d’erreur du compilateur) et / ou
  • lorsque c’est prévu pour, observer leurs produits d’exécution (affichages console) ;
  • afficher / masquer certaines parties du code.

Dans mes livres, lorsque des codes comportent des exemples d’erreurs qui ne passent pas à la compilation, ces parties sont commentées.
Décommentez-les, cliquez sur le bouton pour compiler et / ou exécuter, et lisez les retours du compilateur que vous obtenez à l’écran.

Lorsque cela est permis, vous pouvez également tout à loisir modifier le code et faire vos propres essais.

Exemple

Exercez-vous avec ce bloc simple :

  • retirez les // à gauche de x += 1; puis
  • cliquez sur « Run this code » (flèche « play ») pour compiler et tenter d’exécuter le code.
  • Cliquez sur le bouton pour rétablir le code (Undo changes) puis
  • cliquez sur « Run this code » (flèche « play ») à nouveau.
fn main() {
    let x = 7;
    // x += 1;  // Erreur à la compilation
}

Et avec ce bloc-ci :

  • cliquez sur « Show hidden lines » (œil) pour afficher les lignes de code masquées ;
  • cliquez à nouveau pour les masquer.
  • exécutez le code.
use std::any::type_name;
use std::fmt::Display;

fn print_type_of<T: Display>(x: &T) {
    println!("Type of {x} : {}", type_name::<T>());
}

fn main() {
    let x = 7;
    print_type_of(&x);
    println!("{x}");
    println!("{x:?}");
    let x = x.to_string();
    print_type_of(&x);
    println!("{x}");
    println!("{x:?}");
}

Nota : les boutons interactifs apparaissent

  • lorsque nous survolons le bloc de code avec notre souris ou
  • lorsque nous touchons l’écran une première fois dans la zone du bloc de code (écrans tactiles de tablettes et d’ordiphones).

Seuls les boutons des actions autorisées sur le bloc de code concerné apparaissent.

Note à propos des limitations

Certains comportements ne sont pas possibles avec l’espace de jeu (playground) Rust qui est utilisé pour ce faire.

C’est la raison pour laquelle certains codes retournent des erreurs de compilation sur le site alors qu’ils sont opérationnels « en conditions réelles ». C’est très rare, mais cela arrive (codes liés aux macros procédurales par exemple).

Dans de tels cas, copiez-collez le code dans une machine où Rust est installé pour les tester.

Astuce : retirer les surlignements liés aux recherches

Pour retirer le surlignement une fois arrivé·e à bon port via l’outil de recherche, s’il nous dérange, il nous suffit de retirer les paramètres correspondants dans l’URL.

Par exemple dans ce lien (qui comporte la syntaxe qui permet le surlignement) :

https://apprendre-rust-par-l-exemple.marcjestin.fr/conseils_de_lecture.html?highlight=ceci%20est%20un%20test#zoom-daffichage

nous retirons le ? après .html et tout ce qui suit jusqu’au # pour ne conserver que (la position du chapitre ciblé dans la page mdBook) :

https://apprendre-rust-par-l-exemple.marcjestin.fr/conseils_de_lecture.html#zoom-daffichage

ou même plus prosaïquement (la page mdBook complète) :

https://apprendre-rust-par-l-exemple.marcjestin.fr/conseils_de_lecture.html