Formation Rust
2490€ HT / personne |
4 jours (28 heures) |
Présentation
Notre formation Rust vous permettra de découvrir ce nouveau langage de programmation Open Source créé par Mozilla Research, conçu pour aider les développeurs à concevoir des applications ultra-rapides et sécurisées. Il permet d’éviter les erreurs de segmentation et assure la sécurité des threads, le tout avec une syntaxe élégante. Il a de très bonnes performances via sa gestion de la mémoire faite au niveau du compilateur et une compilation native.
Durant ce cours, vous apprendrez toutes les capacités qu’offre Rust telles que le haut niveau d’abstractions, la sécurité garantie de la mémoire, des threads sans problème de concurrence, des templates : trait-based generics, du pattern matching, l’inférence de type, et un binding C efficace, le tout avec runtime minimal !
Sa conception vous permettra de créer des programmes qui ont la performance et le contrôle d’un langage de bas niveau tel que le C, mais avec les abstractions puissantes d’un langage de haut niveau (C#, Java, etc.). Ces propriétés rendent Rust adapté aux programmeurs qui ont de l’expérience dans des langages comme C/C++ ou Python, et qui recherchent une alternative plus sûre afin d’écrire un code qui fonctionne plus efficacement sans sacrifier l’expressivité.
La devise de Rust est :
Performance, Sécurité, Productivité, choisissez-en trois !
À travers cette formation, vous apprendrez à utiliser tous les concepts de Rust à savoir : borrowing, ownership, lifetimes, mutabilité, génériques et bien d’autres choses afin de développer efficacement vos prochains projets !
Comme dans toutes nos formations, celle-ci vous présentera la toute dernière version de Rust Programming Language, Rust 1.83.
Objectifs
- Découvrir, comprendre et utiliser le langage Rust et son écosystème dans vos futurs projets
- Utiliser la programmation concurrente et la bonne gestion d’erreur avec Rust
- Interfacer Rust avec un autre langage (Python par exemple)
Public visé
- Développeurs applicatifs ou embarqués
Pré-requis
- Connaissances de base d’un système Unix
- Connaissance de programmation (C, C#, Java)
Pré-requis logiciels
- Installer Docker et Docker Compose
- Installation de gnuplot
Recommandations de lecture avant et après la formation
- Un article qui montre étude de cas sur l’écriture d’une application Rust avec seulement qu’une API Minimale
- Cet article présente le langage de programmation Rust ainsi que les raisons de sa popularité
- Une vidéo explicative en quelques minutes du langage de programmation Rust crée par Fireship
Programme de la formation Rust
Chaque chapitre contient ses propres exercices et chaque partie sera suivie d’un ou de plusieurs travaux pratiques.
Introduction à Rust
- Présentation du langage Rust
- Téléchargement et installation de l’environnement Rust
- rustup
- cargo
- rustc
- crates.io
- Mon premier programme
- Trouver la documentation
- Éditeurs pour Rust
LES BASES DE RUST
- Types basiques
- Types numériques, entiers et ottants
- Booléens
- Caractères
- Chaînes de caractères
- Types composés
- Tableaux
- Couples
- Variables et mutabilité
- Notion de mutabilité
- Constantes
- Redénition d’une variable et shadowing
- Variables statiques
- Fonctions
- Syntaxe des fonctions
- Instructions et expressions
- Blocs et portée
- Blocs nécessaires
- Blocs et durée de vie
- Bloc d’assignation
- Structures de contrôle
- if, else et else if
- Boucle loop
- Boucle while
- Boucle for
- Espace de noms
- Notion de crate
- Imports depuis la std
- Alias de type
- Tests unitaires : la commande cargo test
Les types de données composites
- Structures
- Dénition
- Assignation
- Utilisation
- Structures Tuple
- Structures unitaires
- Énumérations
- Forme commune à d’autres langages
- Énumération avec données associées
- Implémentations de trait
- Traits derivables
- Implementations manuelles
- Méthodes
- Constructeurs
- Méthodes non-mutables
- Méthodes mutables
Contrôles de flux basés sur la correspondance de motifs
- if let
- Test du motif d’une structure
- Test d’un variant d’une énumération
- Opérateur OR et motifs multiples
- Test d’une range
- Motifs incomplets : introduction à la déstructuration
- while let
- match
- Différence avec le switch case
- Utilisation de la déstructuration
- Ajout d’expression booléennes
Les types pour la gestion des erreurs
- Option
- Prototype de Option
- Création et utilisation d’une Option
- Méthodes de la std sur Option
- Aller plus loin avec les Options
- Result
- Prototype de Result
- Création et utilisation d’un Result
- La gestion des erreurs
Concepts clefs du langage Rust
Ici, il n’est plus question de bases ; ce module servira à approfondir ou à introduire des concepts propres au langage Rust.
- Expressions
- Initialisation conditionnelle d’une variable
- Utilisation du pattern matching et expressions
- Bloc d’expression
- Possession
- Transfert de possession ou copie
- Reprendre la possession
- Problème de la modification locale
- Inférence de type
- Différents cas d’inférence
- Conflit de type
- Limitations de l’inférence de type
- Références, emprunt et pointeurs
- Références
- Références implicites et sucre syntaxique
- Mutabilité et exclusivité
- Raw pointers
- Introduction à la durée de vie
- Durées de vie implicites
- Quand il faut être explicite
- Lifetime static
- Type slice
- Dénition
- Utilisation
- Itération
- Méthodes
- Accès mutables
- Généricité
- Librairie standard et génériques
- Type générique dans une structure ou une énumération
- Traits
- Le trait From
- Implémentation de From pour une énumération
- Panic, Safe et Unsafe Rust
- Code unsafe
- Prototype de panic
L’allocation dynamique
- Box
- Introduction, pourquoi allouer dynamiquement ?
- Box et Trait Deref
- Cas d’utilisation d’une Box
- Collections – Vector et HashMap
- Vectors : Tableau alloué dynamiquement
- Hashmap : Dictionnaire
- Type String
- Une chaîne de caractère allouée dynamiquement
- Création de String
- Méthodes de String
- String et type &str
- À propos de From et de Into
- Arc, compteurs atomiques de référence
- Caractéristiques des Arc
- Proof of concept
- À propos du trait Clone
- Dérivation de Clone
- Dérive récursif
- Implémentation obligatoire de Clone pour Copy
La Programmation Fonctionnelle
Rust combine des aspects de programmation fonctionnelle, tels que les fermetures et l’immutabilité, enrichissant son modèle impératif et concurrent.
- Opérateur Iry
- Introduction
- Syntaxe det eet
- Closures
- Différence avec une fonction, la capture de l’environnement
- Capture par référence
- Transfert de possession
- Qu’est-ce que l’approche fonctionnelle
- Présentation des Iterateurs
- Principe interne de l’itérateur
- Exemple d’implémentation d’un Iterateur « custom »
- Les méthodes sur les Iterateurs
- Quelques exemples d’utilisation des itérateurs
- Itérateurs, mutabilité, exclusivité et RefCell
- Un problème de borrow checker
- Contournement grace à RefCell
La programmation concurrente
Rust excelle en programmation concurrente grâce à son système de propriété et d’emprunt, assurant la sécurité des threads sans verrouillage explicite.
- Garanties grâce aux traits Send et Sync
- Partage d’une ressource entre plusieurs threads
- Utilisation de Arc
- Mutex, lock et unlock
- MPSC ou Multiple Producer Single Consumer
- Qu’est-ce qu’un MPSC
- Initialisation
- Création des threads et utilisation
Création de trait
- Définition d’un trait
- Polymorphisme statique
- Règle de l’orphelin
FFI
- Appel du Rust depuis C/C++
- Appel du C/C++ depuis Rust
Arborescence de projet et création de crate
- Utilisation d’une crate
- Consultation de crates.io
- Intégration d’une crate au projet
- La documentation des crates
- Utilisation des crates dans vos projets Rust
- Création d’une librairie
- Création d’un boilerplate par defaut avec cargo
- Renseignement du fichier cargo.toml
- Utilisation de la librairie
- Fichiers, Dossiers et Visibilité
- Ajout de fichier
- Sous-dossiers, présentation des deux techniques
Module complémentaire (+1 jour) : Approfondissement
Les bases de la programmation concurrente
- Définition : Mandelbrot
- Parsing pair : command-line arguments
- Mapping pixels : complex numbers
- Tracer : Plotting the set
- Écriture d’un fichier image
- Mandelbrot : Concurrent program
- Exécuter : Mandelbrot plotter
- Sécurité
Unsafe code
- Unsafe blocks
- Exemple : ASCII string type
- Unsafe functions, traits, Raw pointers
- Exemple: RefWithFlag
- Nullable pointers
- Type sizes & alignments
- Pointer arithmetic
- Moving into and out of memory
- Exemple : GapBuffer
- Interop : Foreign functions, calling function lib C & C++
- Common data representations
- Déclaration : foreign functions & variables
- Raw interface libgit2, Safe interface libgit2
FAQ – QUESTIONS / RÉPONSES
La formation est-elle dispensée en présentiel ou à distance ?
Cette formation se déroule en présentiel ou en distanciel.
Qu'est-ce que le CPF ?
Le CPF (Compte Personnel de Formation) est un dispositif régit par l’état français pour permettre aux salariés de disposer d’un financement mobilisable uniquement pour la formation.
Pourquoi suivre une formation éligible au CPF ?
Pour profiter des nombreux 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
Que dois-je faire si mon solde CPF n’est pas suffisant ?
Contactez-nous ! Nos conseillers peuvent vous aider à trouver des sources de financement complémentaires en fonction de votre situation, tels que Pôle emploi, votre entreprise, vous-même (via carte bleue), ou encore l’OPCO Atlas.
Comment m'inscrire via moncompteformation ?
Il suffit de cliquer sur le bandeau vert «CPF» à droite de l’écran (ou en haut si vous utilisez un mobile). Vous devrez ensuite sélectionner une date de session depuis le site MonCompteFormation.
Comment augmenter son solde CPF ?
Vous êtes crédités à la fin de chaque année travaillée sur votre compte Moncompteformation. Vous pouvez recevoir jusqu’à 500 euros par an. Le plafond est fixé à 5 000€ sauf pour des cas spécifiques où la limite atteint 8 000€..
Les cas spécifiques où le plafond est fixé à 8 000€ :
- Salarié non qualifié
- Travailleur reconnu handicapé
- Victime d’accident du travail ou de maladie professionnelle ayant entraîné une incapacité permanente d’au moins de 10 %
- Bénéficiaire d’une pension d’invalidité
- Bénéficiaire d’une pension militaire
- Bénéficiaire d’une allocation ou rente d’invalidité des sapeurs-pompiers volontaires
- Bénéficiaire de la carte mobilité inclusion portant la mention « invalidité »
- Bénéficiaire de l’allocation aux adultes handicapés (AAH)
Que dois-je faire si mon solde CPF n’est pas suffisant ?
Contactez-nous ! Nos conseillers peuvent vous aider à trouver des sources de financement complémentaires en fonction de votre situation, tels que Pôle emploi, votre entreprise, vous-même (via carte bleue), ou encore l’OPCO Atlas.
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
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
Laurent
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
Je recommande la formation
Afficher tous les témoignages
Je recommande la formation
Je recommande la formation
Les + : Le formateur, sa gentillesse, son humilité et sa bienveillance, le contenu qui couvre assez large.
Les – : Des exercices données le soir pour le lendemain. Difficile à concilier avec la vie de famille… un jour supplémentaire permettrait de faire la totalité des exercices sur le temps de la formation.
Je souhaite suivre : Je n8217;ai pas regardé le catalogue.
En synthèse : Un grand merci !
Je recommande la formation
Les + : Pédagogie, programme complet
Les – : Rien à signaler
Je recommande la formation
Je recommande la formation
Les + : L’environnement mis à disposition pour la formation (ie Jupyter) est excellent
Les – : La formation mériterait à être plus longue pour avoir le temps d’aborder plus de sujets.
Les + : Le formateur a un excellent niveau. Le matériel disponible est riche et me permettra d’avancer et faire de tests tout seul. On a bien survolé tout le contenu à l’exception la partie sur C et C++ ( on l’a remplacé avec WebAssembly dû à l’intérêt des participants).
Les – : La plupart des exercices n’était pas adapté au niveau du contenu enseigné. Par exemple, le formateur venait d’enseigner un sujet avancé (ex. smart pointers) et juste après un exercice compliqué qui combinait beaucoup de concepts par encore mûrs était proposé.
Cela a été pire au dernier jour, quand il a parlé sur WebAssembly. Il a juste défini ce qui était WebAssembly sans expliquer les concepts et on passait directement à des exercices très poussés, où il fallait connaitre plusieurs APIs, des librairies avancées et du JavaScript avancé. Pour moi je n’ai pas réussi à suivre cette partie.
Je souhaite suivre : Une formation dédiée à WebAssembly.
En synthèse : Malgré la difficulté au dernier jours et l’absence d’équilibre entre le contenu et les exercices, la formation en général était adapté à mon niveau (car je connaissais la base de Rust), mais pour un débutant, ce difficile à suivre dû au contenu très dense. J’ai pu augmenter mes connaissances sur le langage.
Je recommande cette formation mais avec quelques adaptations:
1 – Augmenter les heures des cours pour passer plus de temps sur les sujets plus avancés
2 – La formation s’adresse plutôt à quelqu’un qui connaît les bases de Rust ainsi que les concepts avancés d’un autre langage de programmation.
3 – Ce serait intéressant des faire deux formations : Rust et Rust Avancé.
Les + : Initiation au Rust.
Beaucoup d’exercices qui nous permettent d’appliquer directement les différentes notions apprises.
Support de cours bien faits.
Excellent formateur.
Exemples pertinents
Les – : J’ai répondu pas « Pas du tout » pour la migration C++ à Rust car nous avons demandé dès le premier jour de remplacer cela par un autre module (WASM) qui était très interéssant et ou j’ai appris beaucoup de choses.
Pas vraiment de point faibles à part que le temps n’est pas suffisant pour maitriser toutes les notions existantes.
Je recommande la formation
Les + : Qualité pédagogique du formateur
Les – : Difficulté d’apprentissage du langage Rust
Je souhaite suivre : Aucune pour l’instant
En synthèse : RAS
Navigation Site Reviews
Noter la formation
2490€ 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