Rust-101
Le but de ce projet est de créer un cours de 5 séances de 2h de théorie avec également 5 fois 2h d'exercices. L'objectif du cours est de se familiariser avec le langage de programmation Rust tout en faisant une introduction à différents concepts avancés de programmation orientée objet et de programmation fonctionnelle.
Contexte
Les élèves ont suivi un cours de C
pendant un an et ont donc des notions de base sur les structures de contrôle,
la compilation, les types, etc, ainsi que des notions algorithmiques de base.
Les élèves recevront du matériel sur une introduction aux bases, très basiques, du Rust à étudier une semaine avant le début du cours qui sera évalué avec un QCM de 15min au début de la première séance.
Prérequis
Pour compiler du code rust, il faut installer la chaîne de compilation et le compilateur rustc
à l'aide de l'outil Rustup.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Après avoir installé la chaîne de compilation, vous pouvez également générer les résumés se trouvant dans le répertoire book
. Pour ce faire il faut installer
le mdbook
cargo install mdbook
et exécuter les commandes
cd book
mdbook build
Inspiration
L'inspiration de ce cours est tirée de deux cours qui ont l'air spectaculairement bons:
- Rust 101: an open-source university course https://tweedegolf.nl/en/blog/80/rust-101-open-source-university-course (cours de base avec introduction au langage).
- Rust-101 de Ralf Jung https://www.ralfj.de/projects/rust-101/main.html (cours plutôt avancé avec beaucoup de notions de programmation fonctionnelle).
Matériel
Le matériel de cours sera composé de trois composants:
- Slides avec la théorie et des exemples.
- Résumés des points importants sur une page.
- Codes source exécutables de tous les exemples des slides.
Syllabus
L'idée principale du cours est de baser toutes les séances sur un exemple très simple de calcul du minimum d'une liste. Cela permet d'introduire tous les concepts du Rust (struct, enum, ownership, pattern matching, itérateurs, etc.) avec une application simple que tout le monde peut comprendre. On pourra ainsi comparer l'implémentation en C et en Rust de
Le cours théorique est découpé comme suit:
- Installation, tooling, Hello World.
- Introduction à la syntaxe (structures de contrôle et types de base aka tous ceux qui sont Copy).
- variables immutables, variables mutables.
- références et références mutables.
- compilateur et lecture des messages
- tuples?
- Types avancés (enum) et pattern matching.
- enum,
- struct,
- Généricité et traits (Clone, Copy p.ex.).
- Tests, documentation, outils variés (rustfmt, clippy, etc).
- Ownership, Borrowing.
- Modules et visibilité.
- Gestion d'erreurs (Option, Result)
- Collections (Vec, HashMap, etc)
- Itérateurs, fonctions d'ordre supérieur, lambdas.
- Smart pointeurs (Box, RefCell, etc.), mémoire.
- CLI, I/O.
- Unsafe Rust et FFI.
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.