L’environnement

Rust est un langage multi-paradigme : orienté objet, générique, fonctionnel. Rust permet de bâtir des applications performantes et plus sécurisées qu’avec d’autres langages. Il est supporté et adopté par les plus grands éditeurs, y compris pour fonctionner dans les noyaux des systèmes d’exploitation.

Objectifs pédagogiques

À l’issue de la formation, le·la stagiaire sera capable de :

  • Créer un projet Rust
  • Programmer avec Rust : utilisation du pattern matching, des closures…
  • Maîtriser les différentes références et la possession
  • Modulariser une application en crates et modules

Public concerné

Technicien·ne·s, ingénieur·e·s, développeur·se·s, scientifiques, enseignant·e·s ou tout public souhaitant découvrir le langage Rust.

Prérequis

Connaître un langage de programmation.
Un questionnaire de pré-formation est proposé pour valider l’adéquation entre le besoin et la formation.

Programme de la formation

Introduction

  • Rust : historique et caractéristiques
  • Environnement de développement Rust

La programmation de base en Rust

  • Les types de Rust : types de base, String, « str slice »
  • Main et fonctions de Rust
  • Contrôle de flux avec Rust
  • Enum et pattern matching avec Rust
  • Tableaux et « tranches de tableaux » pour éviter la copie

Références : possession et prêt

  • Possession exclusive des objets
  • Références en lecture partagée et référence exclusive pour l’écriture
  • Allocation de mémoire avec Box<T>
  • Allocation et partage avec Rc<T>
  • Design pattern de mutabilité intérieure avec RefCell<T>

La programmation orientée objet en Rust

  • Tuples et structures
  • Implémentation pour les structs, enums…
  • Fonctions associées au type
  • Les Traits pour mettre du comportement en commun
  • Traits standards de Rust
  • Généricité : quand le type diffère mais que l’on veut partager du code

Les fermetures pour la programmation fonctionnelle

  • Les fermetures : capacité à écrire des fonctions courtes
  • Capacité de capture des fermetures
  • Différentes sortes de fermetures

Collections et itérateurs de Rust

  • Les collections pour des algorithmes qui gèrent la croissance
  • Les collections pour les recherches rapides
  • Itérateurs pour parcourir les collections
  • Adapteurs d’itérateurs : la boîte à outil des traitements ensemblistes

Flux de Rust

  • Les flux en lecture : fichiers, sockets, données en mémoire, console
  • Design pattern Resource Acquisition is Initialization pour fermer les fichiers

Multithreading avec Rust

  • Démarrer un thread
  • Sécurité intrinsèque des threads de Rust avec le déplacement
  • Poser un verrou et sécurité des mutex propriétaires des ressources