Environnement de travail
Au delà de son compilateur rustc (excellentissime, comme nous le verrons par la suite), Rust propose de nombreux outils très aboutis que nous allons apprendre à connaître.
Un dicton dit
« On reconnaît un bon artisan au fait qu’il choisit bien ses outils. »
Je ne sais pas s’il est exact, mais je sais que l’environnement de travail Rust nous apporte indéniablement une palette d’outils de très bonne qualité.
Les principaux outils Rust
Pour travailler correctement et proprement avec Rust, nous avons besoin de connaître quelques commandes simples pour utiliser rustup, cargo, rustfmt, clippy et rustdoc.
rustup
rustup est l’installateur officiel et le gestionnaire de versions de Rust.
Il permet notamment :
- d’installer et de mettre à jour les outils Rust.
- de gérer plusieurs versions et de basculer de l’une à l’autre.
- d’ajouter des cibles de compilation croisée (cross-compilation) pour créer des exécutables pour d’autres systèmes (Android, Windows, WebAssembly, etc.).
- de télécharger les composants additionnels.
cargo
cargo permet de faire à peu près tout le reste, si nous nous y prenons bien.
Les commandes clefs à connaître sont :
cargo newpour créer un nouveau projet.cargo runpour exécuter le projet en cours.cargo testpour exécuter les tests du projet en cours.cargo buildpour compiler le projet en cours (si les deux précédentes qui se chargent de le faire ne suffisent pas).cargo fmt(rustfmt).cargo clippy.
rustfmt
rustfmt est un formateur de code. Il se charge de nous aider à présenter proprement le code.
rustfmt applique les règles de style officielles de la communauté Rust (indentation, espaces, sauts de lignes, placement des accolades). Cela garantit que tous les projets Rust partagent la même structure visuelle.
clippy
clippy est le linter (analyseur statique) de Rust.
Le compilateur rustc est déjà un assistant très qualitatif. clippy va plus loin en traquant les anti-patterns, les problèmes de performance potentiels, le code non idiomatique ou les erreurs de logique courantes.
rustdoc
rustdoc est le générateur de documentation Rust.
C’est un outil qui redonne envie de documenter, tellement il est bien conçu, à commencer par le support du langage Markdown.
Pour vous convaincre de sa qualité, je vous invite à faire une petite balade dans https://docs.rs. Il s’agit du site regroupant toutes les documentations des projets déposés sur les serveurs publics de la communauté.
TOUS les projets présents dans le dépôt des crates (paquet Rust) https://crates.io/ voient leur documentation publiée dans https://docs.rs.
Exemple :
- crate https://crates.io/crates/tokio,
- documentation https://docs.rs/tokio/latest/tokio/.
Autre gros atout de la documentation rustdoc : elle relie la documentation avec le code source (dupliqué dans la documentation pour plus de commodité d’affichage).
Exemple :
- https://docs.rs/tokio/latest/tokio/task/fn.spawn.html
- => https://docs.rs/tokio/latest/src/tokio/task/spawn.rs.html#174-185
Les lignes correspondant au code concerné (la fonction publique
spawnici) sont bien surlignées dans l’affichage et indiquées dans l’URL.