Formation Rust
| 2 490€ HT / personne |
| 4 jours (28 heures) |
Présentation
Notre formation Rust de 4 jours vous permet d’apprendre à développer des applications performantes, fiables et sécurisées avec un langage particulièrement adapté à la programmation système.
Vous découvrirez les fondamentaux de Rust et ses principaux mécanismes : propriété et emprunts (ownership et borrowing), gestion des durées de vie, correspondance de motifs (pattern matching), généricité et traits.
Vous apprendrez à utiliser son système de types et ses règles de gestion de la mémoire pour prévenir de nombreuses erreurs dès la compilation. Vous mettrez également en pratique la gestion des erreurs, la manipulation des collections et les bases de la programmation concurrente et asynchrone.
La formation vous familiarisera avec les outils de l’écosystème Rust pour créer, organiser, tester et documenter vos projets. Une introduction à l’interopérabilité avec C et C++ complétera ces apprentissages.
Comme toutes nos formations, celle-ci vous présentera la dernière version stable de la technologie Rust (1.93.1) et ses nouveautés.
Objectifs
- Comprendre les fondamentaux de Rust et développer des applications avec ses outils
- Appliquer les principes de propriété, d’emprunt et de gestion de la mémoire
- Utiliser le pattern matching et les mécanismes de gestion des erreurs
- Comprendre les bases de la programmation concurrente et asynchrone avec Rust
- Comprendre les principes de l’interopérabilité avec C et C++
Public visé
- Développeurs souhaitant apprendre Rust
- Architectes logiciels souhaitant comprendre les possibilités et les contraintes du langage
Prérequis
- Pratique d’un langage de programmation tel que C, C++, C# ou Java
- Connaissances de base d’un environnement Unix et de l’utilisation d’un terminal
Prérequis techniques
- Installer Docker et Docker Compose, puis vérifier leur fonctionnement
- Sous Windows, installer une distribution Debian ou Ubuntu avec WSL
- Disposer de Git pour récupérer le dépôt de formation
- Disposer d’un navigateur web pour accéder aux notebooks Jupyter
- Prévoir une connexion Internet pour télécharger les supports et l’image Docker
Ressources pour préparer et prolonger la formation
- Une étude de cas sur le développement d’une application Rust avec une API minimale
- Une présentation du langage Rust et des raisons de sa popularité
- Une courte vidéo de Fireship pour découvrir les principales caractéristiques du langage
Programme de notre formation Rust
Découvrir Rust et son environnement de développement
- Présentation du langage, de ses caractéristiques et de ses cas d’utilisation
- Installation et configuration de l’environnement
- rustup : installation et gestion des chaînes d’outils
- rustc : compilation des programmes Rust
- Cargo : création des projets et gestion des dépendances
- crates.io : recherche de bibliothèques
- Création, compilation et exécution d’un premier programme
- Structure d’un projet et rôle des fichiers Cargo.toml et Cargo.lock
- Utilisation des notebooks Jupyter et du noyau Rust EvCxR
- Documentation officielle, éditeurs et rust-analyzer
- Découverte des outils de formatage et d’analyse du code
Acquérir les fondamentaux du langage
- Types de données
- Entiers et nombres à virgule flottante
- Booléens et caractères
- Introduction aux chaînes de caractères
- Tableaux, tuples et alias de types
- Variables et mutabilité
- Déclaration avec let et mut
- Constantes et variables statiques
- Redéfinition d’une variable avec le shadowing
- Fonctions et expressions
- Déclaration, paramètres et valeurs de retour
- Différences entre instructions et expressions
- Blocs et portée des variables
- Structures de contrôle
- Conditions if, else et else if
- Boucles loop, while et for
- Utilisation de break et continue
- Premiers repères sur les crates, les modules et les imports avec use
- Exercices d’application sur les types, les fonctions et les boucles
Modéliser les données avec les structures et les énumérations
- Structures avec struct
- Définition, initialisation et accès aux champs
- Structures de type tuple et structures unitaires
- Énumérations avec enum
- Définition et utilisation des variantes
- Variantes avec données associées
- Méthodes et implémentations
- Organisation du code avec les blocs impl
- Fonctions associées et constructeurs
- Méthodes avec &self et &mut self
- Introduction aux traits et aux implémentations dérivées
- Travaux pratiques : premières étapes du projet Farador avec des structures, des énumérations et des méthodes
Contrôler les flux avec la correspondance de motifs
- Expression match et exhaustivité des cas
- Déstructuration des structures, des énumérations et des tuples
- Conditions de garde dans les expressions match
- Expressions if let et while let
- Chaînage des conditions avec let
- Motifs multiples avec | et correspondance avec les plages de valeurs
- Exercices de sélection et d’extraction de données par motifs
Gérer les valeurs optionnelles et les erreurs
- Représenter l’absence d’une valeur avec Option
- Variantes Some et None
- Extraction et transformation des valeurs
- Méthodes map, and_then et unwrap_or
- Représenter un résultat ou une erreur avec Result
- Variantes Ok et Err
- Traitement explicite des erreurs
- Propagation avec l’opérateur ?
- Distinguer les erreurs récupérables des situations de panique
- Utilisation de panic! et limites de unwrap
- Introduction aux erreurs personnalisées
- Travaux pratiques : faire évoluer Farador pour représenter des valeurs optionnelles et des opérations susceptibles d’échouer
Comprendre la propriété, les emprunts et les durées de vie
Ce chapitre explique comment Rust contrôle l’utilisation des valeurs et des références pour prévenir les accès mémoire invalides.
- Système de propriété : ownership
- Principes et règles de propriété
- Transfert de propriété avec move
- Différences entre copie et clonage
- Libération automatique des ressources et trait Drop
- Références et emprunts : borrowing
- Références partagées et références mutables
- Mutabilité et exclusivité des emprunts
- Lecture des messages du borrow checker
- Durées de vie : lifetimes
- Durées de vie implicites et annotations explicites
- Références dans les structures
- Durée de vie ‘static
- Slices et emprunts sur les collections
- Inférence de types, ambiguïtés et annotations nécessaires
- Travaux pratiques : modéliser des livres et leurs auteurs pour comprendre les contraintes des références et des durées de vie
Utiliser la généricité, les traits et le polymorphisme
- Fonctions, structures et énumérations génériques
- Contraintes de traits : trait bounds
- Définition et implémentation d’un trait
- Méthodes requises et méthodes par défaut
- Implémentations manuelles et dérivées
- Conversions avec From et Into
- Introduction au polymorphisme statique et au dispatch dynamique
- Utilisation de impl Trait et dyn Trait
- Règle de l’orphelin et utilisation du pattern newtype
- Travaux pratiques : définir une structure générique et comparer ses valeurs à l’aide de contraintes de traits
Manipuler les allocations dynamiques et les collections
- Allocation sur le tas avec Box
- Principes et cas d’utilisation
- Trait Deref et accès aux données
- Libération des ressources
- Collections
- Vec : tableaux dynamiques
- HashMap : associations clé-valeur
- Accès, modification et parcours des éléments
- Chaînes de caractères
- Différences entre String et &str
- Création, conversion et manipulation
- Encodage UTF-8
- Partage de propriété avec Rc et Arc
- Introduction à la mutabilité intérieure avec RefCell
- Relations et différences entre Clone et Copy
Écrire des traitements avec les closures et les itérateurs
- Fermetures : closures
- Syntaxe et différences avec les fonctions
- Capture de l’environnement par référence
- Transfert de propriété avec move
- Introduction aux traits Fn, FnMut et FnOnce
- Itérateurs
- Fonctionnement et évaluation paresseuse
- Transformation et filtrage avec map et filter
- Agrégation avec fold et création de collections avec collect
- Chaînage, consommation et itération mutable
- Introduction à la création d’un itérateur personnalisé
- Gestion des emprunts dans les traitements par itérateurs
- Travaux pratiques : filtrer et transformer une collection, puis comparer les approches par boucles et par itérateurs
Mettre en pratique les arguments et la lecture de fichiers
- Récupération des arguments de la ligne de commande avec std::env::args
- Ouverture et lecture de fichiers avec la bibliothèque standard
- Propagation des erreurs d’entrée-sortie avec Result et l’opérateur ?
- Conversion des données lues et traitement des erreurs d’encodage UTF-8
- Travaux pratiques : développer un utilitaire affichant le contenu de plusieurs fichiers et gérant les erreurs sans déclencher de panique
Découvrir la programmation concurrente et asynchrone
- Programmation multithread
- Création de threads avec std::thread
- Transfert de propriété vers les threads
- Rôle des traits Send et Sync
- Partage de ressources avec Arc et Mutex
- Communication entre threads
- Principe des canaux MPSC : Multiple Producer, Single Consumer
- Création des canaux et échange de messages
- Introduction à la programmation asynchrone
- Différences entre multithreading et asynchronisme
- Principes des futures et syntaxe async/await
- Introduction aux fermetures asynchrones
- Rôle d’un runtime comme Tokio
- Lancement de tâches et attente de leurs résultats
- Travaux pratiques : partager une ressource entre deux threads sans variables globales ni code unsafe
- Démonstration comparative de l’exécution de tâches avec Tokio et avec des threads
Comprendre les bases de l’interopérabilité avec C et C++
- Principes de la Foreign Function Interface : FFI
- Introduction aux pointeurs bruts et aux responsabilités du code unsafe
- Déclaration des fonctions externes et des blocs extern
- Appel de fonctions C depuis Rust
- Exposition de fonctions Rust pour une utilisation depuis C ou C++
- Représentation des données avec #[repr(C)]
- Précautions concernant la validité des pointeurs, les durées de vie et la libération de la mémoire
Organiser, tester et maintenir un projet Rust
- Gestion des dépendances
- Recherche de bibliothèques sur crates.io
- Ajout et mise à jour des dépendances avec Cargo
- Consultation de la documentation des crates
- Création d’une bibliothèque Rust
- Génération d’un projet et configuration de Cargo.toml
- Organisation des fichiers et des modules
- Gestion de la visibilité avec pub et des réexportations avec pub use
- Qualité du code
- Formatage avec cargo fmt
- Analyse statique avec cargo clippy
- Écriture et exécution de tests avec cargo test
- Génération de documentation avec cargo doc
- Repères pour la maintenance
- Audit des dépendances avec cargo audit
- Choix de l’édition du langage dans Cargo.toml
- Mise à jour du compilateur et des dépendances
- Découverte de cargo fix –edition pour accompagner une migration
- Vérification de la compatibilité et traitement des avertissements
FAQ – QUESTIONS / RÉPONSES
Pourquoi choisir Rust ?
Si vous souhaitez en savoir davantage sur cette technologie, vous pouvez consulter nos articles sur Rust.
La formation est-elle dispensée en présentiel ou à distance ?
Cette formation se déroule en présentiel ou en distanciel.
Comment puis-je financer cette formation ?
Contactez-nous pour trouver une solution de financement sur mesure ! Nous vous aiderons à choisir parmi les options suivantes :
- OPCO (opérateurs de compétences) de votre entreprise
- Le plan de développement des compétences
- Les actions collectives pour les formations Big Data
- Le dispositif FNE-Formation
- Dispositif TPE / PME
- Pôle Emploi
- L’AIF (Aide Individuelle à la Formation pour les demandeurs d’emploi)
- L’ARE (Allocation chômage d’aide au retour à l’emploi)
- Le dispositif CPF (MonCompteformation)
- Contrat cadre
Qu'est-ce que le CPF ?
Le Compte Personnel de Formation est un dispositif régi par l’état français pour permettre aux salariés de disposer d’un financement mobilisable uniquement pour la formation.
Sur votre compte « Moncompteformation », vous pouvez recevoir jusqu’à 500 euros par an cumulable. Les avantages qu’offre le CPF :
- Une formation finançable jusqu’à 100%
- Une formation de qualité approuvée par l’instance gouvernementale France Compétences
- L’obtention d’une certification délivrée par France Compétences
Pour aller plus loin
Formation Rust Avancé
Formation WebAssembly
Formation WebAssembly avec Rust
Langues et Lieux disponibles
Langues
- Français
- Anglais / English
Lieux
-
France entière
- Paris
- Lille
- Reims
- Lyon
- Toulouse
- Bordeaux
- Montpellier
- Nice
- Sophia Antipolis
- Marseille
- Aix-en-Provence
- Nantes
- Rennes
- Strasbourg
- Grenoble
- Dijon
- Tours
- Saint-Étienne
- Toulon
- Angers
-
Belgique
- Bruxelles
- Liège
-
Suisse
- Genève
- Zurich
- Lausanne
-
Luxembourg
Nos Formateurs Référents

Mickael
Je pratique Rust depuis quelques années dans un contexte industriel comme langage de programmation pour le backend d’applications web. Je contribue également à la communauté Rust par la publication de paquets open source. Pour moi, Rust fournit une expérience de développement système performante, moderne et surtout sûre.

Bastien
Utilisateur depuis la bêta en 2015, depuis j’ai créé des projets personnels (sur GitHub) et après cela, j’ai fait un serveur web en Rust dans une start-up (backend avec gestion des templates). J’ai écrit un filesystem en Rust pour la plateforme Android pour la startup Moore.
Témoignages
Les + : L’interactivité lors de la formation
Les – : J’aurai aimé faire un petit peu plus de TP
Afficher tous les témoignages
Les + : L’interactivité lors de la formation
Les – : J’aurai aimé faire un petit peu plus de TP
Je recommande la formation
Je recommande la formation
Les + : Compétences formateur
Equilibre theorie / pratique
Les – : Salle fournie par Bull trop petite et mal aérée. Sièges Bull inconfortables. (responsabilité Bull et pas ambient IT)
Déroulement parfois un peu déstructuré (exercices parfois abordés avant la théorie, même si c’est en partie volontaire)
Concepts rust amenés dans un ordre cohérent mais parfois arbitraire
En synthèse : RAS
Je recommande la formation
Les + : Le formateur et son support sous forme de container docker exécutant un notebook jupyter
Les – : J’aurais aimé un jour supplémentaire pour faire plus de mise en pratique.
Les + : La formation était claire, précise et le formateur passait du temps avec chaque personne pour s’assurer que tout le monde avait bien compris. Les TP permettaient de rapidement mettre en pratique ce qui avait été vu, ils étaient pour moi la meilleure partie de la formation.
Les – : Un peu plus de pratique (surtout à la fin) aurait été apprécié.
Les + : Fluidité des explications et la pertinence au réponse aux questions posés
Les – : Un peut dense
Les – : Peut-être un manque de pratique, ou du moins de façon plus récurrente pour éviter les tunnels de théorie.
Je recommande la formation
Les + : L’équilibre en théorie et pratique est vraiment bien trouvé. Et le formateur était très didactique et a bien réussi a prendre en compte le niveau des participants.
Les – : peut être sa densité sur 4 j c’est un peu court.
Les + : Le formateur (expert Rust sympathique et dynamique), le format de la formation interactive avec les notebooks Jupyter et les TPs
Les – : La formation est très dense, cela mériterait peut-être de l’étendre sur un 5ième jour.
Je souhaite suivre : RAS
Navigation Site Reviews
Noter la formation
| 2 490€ HT / personne |
| 4 jours (28 heures) |
UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?
Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.
ILS SE SONT FORMÉS CHEZ NOUS

