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

Un projet d’E/S : construire un programme en ligne de commande

Ce chapitre est un récapitulatif des nombreuses compétences que vous avez acquises jusqu’ici, ainsi qu’une exploration de quelques fonctionnalités supplémentaires de la bibliothèque standard. Nous allons construire un outil en ligne de commande qui interagit avec les entrées/sorties de fichiers et de la ligne de commande pour mettre en pratique certains des concepts de Rust que vous maîtrisez désormais.

La rapidité, la sécurité, la production d’un binaire unique et la prise en charge multiplateforme de Rust en font un langage idéal pour créer des outils en ligne de commande. Pour notre projet, nous allons donc créer notre propre version du classique outil de recherche en ligne de commande grep (globally search a regular expression and print). Dans le cas d’utilisation le plus simple, grep recherche une chaîne de caractères spécifiée dans un fichier donné. Pour ce faire, grep prend en arguments un chemin de fichier et une chaîne de caractères. Ensuite, il lit le fichier, trouve les lignes qui contiennent la chaîne en argument, et affiche ces lignes.

En cours de route, nous montrerons comment faire en sorte que notre outil en ligne de commande utilise les fonctionnalités du terminal que de nombreux autres outils en ligne de commande utilisent. Nous lirons la valeur d’une variable d’environnement pour permettre à l’utilisateur de configurer le comportement de notre outil. Nous afficherons également les messages d’erreur sur le flux d’erreur standard (stderr) plutôt que sur la sortie standard (stdout), de sorte que, par exemple, l’utilisateur puisse rediriger la sortie réussie vers un fichier tout en continuant à voir les messages d’erreur à l’écran.

Un membre de la communauté Rust, Andrew Gallant, a déjà créé une version complète et très rapide de grep, appelée ripgrep. En comparaison, notre version sera assez simple, mais ce chapitre vous donnera les connaissances de base nécessaires pour comprendre un projet concret tel que ripgrep.

Notre projet grep combinera un certain nombre de concepts que vous avez appris jusqu’ici :

Nous introduirons également brièvement les fermetures, les itérateurs et les objets trait, que le chapitre 13 et le chapitre 18 couvriront en détail.