Le langage RUST propose de concentrer toutes les qualités d’un langage de programmation pour développer tous types d’applications. On peut donc le présenter comme un langage universel et multi paradigme (Desktop, Web, embarqué, …). Il a de plus pour vocation d’être rapide, productif, peu gourmand en ressources, fiable et sécurisé tout en évitant la discipline que pouvait imposer le C ou le C++ aux développeurs sur ces aspects.
Cette formation RUST vous propose de découvrir progressivement le langage RUST à travers ses concepts et leurs mises en œuvre dans un contexte de développement professionnel avec de nombreux exemples et travaux pratiques réalistes.
Public :
Ce cours s'adresse essentiellement aux développeurs, ingénieurs, consultants, étudiants, chercheurs, architectes et chefs de projet.
Prérequis :
Pour suivre cette formation Rust Initiation il est nécessaire d'avoir de bonnes connaissances en programmation (notamment C, C# ou Java).
Jour 1
Découverte de Rust
Rapide historique récapitulatif
Rust dans le panorama actuel : pourquoi un nouveau langage ?
Les atouts majeurs de Rust : sécurité, performance et productivité
Connaître et comprendre les limites du langageQuizRésumé des points clefs qui caractérisent le langage RustConfiguration et premiers pas
Installation détaillée : Rustup, Cargo et Rust
Initiation à l'environnement de développement : savoir s’outiller
Votre premier programme Rust : "Hello, World!"AtelierInstallez Rust et Cargo via Rustup puis mettez en place votre environnement de travail et votre IDE avec VSCode et toutes les extensions appropriées. Écrivez, compilez et exécutez votre premier programme en RustPlongée dans l'écosystème Rust
Cargo : bien plus qu'un gestionnaire de paquets
De la rédaction au déploiement : Compiler et exécuter votre code
Assurer la qualité : Documenter, tester et utiliser Clippy pour le linting
Adoptez les bonnes pratiques : formatez automatiquement le code
Gérer les dépendances de manière efficaceAtelierExpérimentez à travers deux mini-applications (fibonacci & fizzbuzz), mettez en œuvre les tests unitaires, faites la chasse aux warnings avec Clippy et documentez votre projet.Typage de Données
Un langage riche et sécurisé
Exploration détaillée des types
Structures de données complexes : Tuples, pointeurs, tableaux, slices, vecteurs…
Travail avec les chaînes : De l'unicode aux strings Rust
Conversion de types et alias : Écrire du code sûr et lisibleAtelierMise en œuvre des types de données nécessaire au TP du module suivant (calcul numérique et structures associées)Maîtriser la syntaxe
Fondamentaux du Langage : Variables, structures de contrôle et fonctions
Comprendre l'ownership et le borrowing : les références partagées et exclusives
Structures Complexes : Structures, énumérations et leurs utilisations
Rust propre et idiomatique : Pattern matching, implémentations et closuresAtelierDéveloppez une application de conversion de température mettant en œuvre des structures et syntaxes idiomatiques variées et appropriées, tout en suivant toujours les meilleures pratiques de test unitaire, formatage et lintingJour 2Modularité en Rust
Écrire un programme en une seule ligne, c’est possible !
Les quatre mots d’ordre : lisibilité, maintenabilité, réutilisabilité et interopérabilité
Exploration des spécificités et mécanismes d’import et de modularisation
Création de Modules : Définir, déclarer et intégrer des modules dans votre application
Visibilité et Portée : Contrôle d'accès et interaction entre modulesAtelierRéorganisation des applications précédemment développées en modules et sous-modules proprement découpés et agencés. Utilisation des attributs de visibilité ainsi que des imports appropriés. Apprendre à concevoir un prélude.Gestion des erreurs
Philosophie des erreurs en Rust
Mécanismes de gestion proposés
Différencier et traiter les erreurs récupérables et irrécupérables
Le trait Error en profondeur : centraliser la gestion d'erreurs
Techniques avancées : Propagation, erreurs personnalisées et librairies spécialiséesAtelierConception d’une stratégie idiomatique et globale de gestion d’erreurs puis mise en œuvre au sein des applications précédemment développées en anticipant divers scénarios ainsi qu’en choisissant la librairie la plus adaptée au cas d’usage (ThisError, Anyhow, Eyre…)Traits et la Généricité
Découverte des traits, sous-traits et de leur rôle central
Fonctions génériques : réutilisez le code à l’infini
Stockez tous vos fruits dans le même panier avec les traits objects
Sous le capot : monomorphisation et dynamic dispatch
Utilisation avancée des traits : types associés et généricitéAtelierAmélioration de la qualité des applications précédemment développées en y intégrant votre implémentation des traits standard Display, Debug, Default, Eq, Ord, From et IntoJour 3Collections de données
Maîtriser les collections standard : Vecteurs, hashmaps, sets, et plus
Accéder élégamment et efficacement aux données avec les Entries
Techniques avancées : Itérateurs et opérations courantes
Construire n’importe quelle collection à partir d’un itérateurAtelierExploiter le potentiel des traits Iterator et IntoIterator en réimplémentant fizzbuzz et fibonacci sous forme d’itérateurs et de deux manières différentesMacros et métaprogrammation
(Re)Découverte des macros natives
Les macros en Rust : sécurité et hygiène
Macros déclaratives ou procédurales
Écrire ses propres macros avec macro_rules !AtelierUtilisation de macros nativesAller plus loin avec Rust
Domaines avancés : code unsafe, parallélisme, asynchrone, interopérabilité et développement embarqué
Panorama des bibliothèques populaires et ressources pour l'apprentissage continuAtelierSérialisez et désérialisez les structures précédemment implémentées avec Serde dans différents formats (JSON, YAML, TOML et beaucoup d’autres) de manière transparente. Explorez les interactions avec d'autres langages et plateformes.Session de pratique finale
AtelierMettez en œuvre toutes les compétences acquises pour résoudre un ensemble de puzzles, mélangeant les concepts abordés au cours de la formation.