Date de mise à jour : 21/03/2025 | Identifiant OffreInfo :
14_AF_0000154160
Organisme responsable :
Human Coders
Comprendre et écrire du code Rust.
Se repérer dans l'écosystème Rust et découvrir quelques bibliothèques populaires.
Jour 1 : Comprendre et utiliser Rust
- Historique et positionnement de Rust
Bases du langage
- Commentaires
- Types primitifs (simples et composés)
- Fonctions
- Variables (typage, muabilité, constantes)
- Blocs et shadowing
- Structures de contrôle
- Les types structurés (exemple : Duration)
- Les types énumérés (exemple : Option)
- Filtrage par motif (pattern matching)
- Écrire dans la console
Possession (ownership) et emprunt (borrowing)
- Enjeux, contraintes et avantages de la possession (ownership)
- Fonctionnement de la possession
- Emprunt (borrowing) grâce aux références
- Les slices de chaînes de caractères
Créer des types
- Créer des alias de type
- Créer des types structurés (structs, tuple structs, unit structs)
- Créer des types énumérés (enum)
- Fonction et méthodes associées
Généricité et durée de vie (lifetime)
- Types de données génériques
- Créer et implémenter des traits
- Traits courants de la bibliothèque standard (Display, Clone, Add, ...)
- Traits vs. énumération
- Principe de la durée de vie (lifetime)
- Manipuler les durées de vie
Collections
- Fonctions anonymes (closures)
- Vec
- Slices
- HashSet
- HashMap
- Itérateurs
Jour 2 : Écosystème et outillage
Modules et crates
- Paquets et crates
- Modules (déclaration, import, ...)
- Visibilité des entités
- Arborescence des modules et des fichiers de code
Outillage
- rustup (toolchain, cibles, ...)
- Cargo
- Cargo : gestion des dépendances
- Cargo : déclarer et utiliser des features
- rustfmt
- Clippy
Tests et documentation
- Qualité et tests
- Écrire et lancer des tests (unitaires et d'intégration) avec Cargo
- Écrire et générer de la documentation avec Cargo
- Autres facilités de Cargo : les exemples et les benchmarks
Gestion des erreurs
- Recoverable vs. unrecoverable
- Faire planter le programme
- Option
- Result
- Gérer les erreurs dans une application (unwrap(), expect(), pattern matching, anyhow)
- Créer un type d'erreur structuré dans une bibliothèque (String, std::error::Error, thiserror)
Concurrence et asynchronisme
- Créer des threads
- Partager des données entre threads (Arc, Mutex, MPSC)
- Les traits Sync et Send
- Futures et async/await (et Tokio)
Jour 3 : Pratique dirigée
Sérialisation et désérialisation
- Fonctionnement et écosystème de Serde
- Utiliser serde_json en pratique
- Écrire un parser avec nom
Exploration et pratique à la carte
Suivant le temps restant et les envies des stagiaires, nous explorons des thèmes liés à Rust.
Cette exploration peut prendre la forme de discussions, de démonstrations ou de travaux pratiques en semi-autonomie, seul ou en binôme.
Attestation de formation
Non certifiante
Sans niveau spécifique