Skip to content
Snippets Groups Projects
Forked from orestis.malaspin / rust-101
113 commits behind the upstream repository.
Name Last commit Last update
book
codes
.gitignore
.gitlab-ci.yml
LICENSE
README.md

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:

  1. 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).
  2. 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:

  1. Slides avec la théorie et des exemples.
  2. Résumés des points importants sur une page.
  3. 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:

  1. Installation, tooling, Hello World.
  2. 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?
  3. Types avancés (enum) et pattern matching.
    • enum,
    • struct,
  4. Généricité et traits (Clone, Copy p.ex.).
  5. Tests, documentation, outils variés (rustfmt, clippy, etc).
  6. Ownership, Borrowing.
  7. Modules et visibilité.
  8. Gestion d'erreurs (Option, Result)
  9. Collections (Vec, HashMap, etc)
  10. Itérateurs, fonctions d'ordre supérieur, lambdas.
  11. Smart pointeurs (Box, RefCell, etc.), mémoire.
  12. CLI, I/O.
  13. Unsafe Rust et FFI.

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.