Introduction et outillage Rust
- Un langage sécurisé et performant : détection des erreurs à la compilation et panique contrôlée.
- Compilateur Rust.
- Cargo pour la gestion des projets et paquets.
- Documentation avec Rustdoc.
- Les environnements de développement intégré (IDE) pour Rust.
Travaux pratiques
Prise en main du langage et de son outillage.
Bases de Rust
- Les types de base de Rust. Variables mutables et immuables.
- Différents types de chaînes de caractères.
- Programmation procédurale et retour des fonctions implicites.
- Contrôle de flux et différents types de boucles, pattern matching.
- Programmation générique avec Rust.
- Expressions lambdas et captures.
- Les macros de Rust pour la métaprogrammation.
Travaux pratiques
Implémentation d’algorithmes procéduraux et génériques avec Rust.
Vers une programmation orientée objet
- Les "traits" standards les plus communs : Copy, Clone, Into, Drop…
- Visibilité, publicité, privauté à travers les modules et les crates.
- Agréger les données avec les structs et les tuples.
- Implémentation des structs.
- Enum pour codifier et structurer.
- Contrats fortement typés avec les traits et leur implémentation.
Travaux pratiques
Conception à base d’interface.
Cycle de vie des objets, gestion mémoire
- Cycle de vie des objets, portées, possession et emprunt des objets.
- Mettre un label sur les portées des objets pour les cycles de vie complexes.
- Compteurs de référence Rc<T> pour le partage des objets.
- Allocation dynamique avec Box<T> pour la liberté du cycle de vie.
- Pointeurs, blocs unsafes et pointeurs intelligents avec Unique<T>, Shared<T> pour le bas niveau.
Travaux pratiques
Implémentation d’arborescence et gestion de cycle de vie.
Bibliothèques de Rust
- Appeler Rust avec d’autres langages grâce à Foreign Function Interface (FFI).
- Les collections de Rust.
- Bibliothèques d’entrées sorties : lire et écrire dans les fichiers avec Rust.
- Multithreading avec Rust : synchroniser l’accès aux données.
- Appeler du code C avec Rust.
Travaux pratiques
Faire du multitâche avec Rust.