Rust pour développeurs C#/Java — Mission
Pourquoi j’apprends ça
Section intitulée « Pourquoi j’apprends ça »J’écris du C# (et je lis beaucoup de Java), et une part croissante de mon écosystème — IX, hari — est écrite en Rust. Je veux lire et modifier ce code avec assurance au lieu de deviner, et comprendre pourquoi le compilateur rejette ce qui serait parfaitement valable en C#.
À qui s’adresse ce cours
Section intitulée « À qui s’adresse ce cours »Vous êtes à l’aise avec C# ou Java : classes, interfaces, génériques, exceptions, collections, LINQ ou Streams, async/await ou CompletableFuture.
Vous n’avez jamais écrit de Rust. Chaque leçon part du concept que vous connaissez déjà et montre où Rust est d’accord, où il diffère, et pourquoi.
À la fin de ce cours, je saurai
Section intitulée « À la fin de ce cours, je saurai »- mettre en place un projet Rust avec Cargo et m’y retrouver dans l’outillage ;
- expliquer la possession (ownership), l’emprunt et les durées de vie (lifetimes) en partant de ce qu’un ramasse-miettes fait normalement pour moi ;
- modéliser des données avec
struct,enumetmatchau lieu de hiérarchies de classes ; - gérer les erreurs avec
Option,Resultet?au lieu denullet des exceptions ; - utiliser les traits, les génériques et les itérateurs comme j’utilise les interfaces, les génériques et LINQ/Streams ;
- écrire du code concurrent et asynchrone sûr ;
- tester, documenter et analyser (lint) une crate.
| # | Leçon | Vous connaissez déjà |
|---|---|---|
| 1 | Chaîne d’outils et Cargo | CLI dotnet, NuGet, Maven/Gradle |
| 2 | Types, mutabilité et expressions | var, final/readonly, int/long, ternaires |
| 3 | Possession et déplacements | le ramasse-miettes, IDisposable, try-with-resources |
| 4 | Emprunts et chaînes | références, string/String, StringBuilder |
| 5 | Structs, enums et pattern matching | classes, records, hiérarchies scellées, switch |
| 6 | Option, Result et ? |
null, exceptions |
| 7 | Traits et génériques | interfaces, génériques |
| 8 | Collections et itérateurs | LINQ, Streams |
| 9 | Durées de vie (lifetimes) | — |
| 10 | Modules, crates et workspaces | namespaces/packages, projets, solutions |
| 11 | Box, Rc, Arc, RefCell |
références, objets partagés |
| 12 | Threads, Send/Sync, Mutex, rayon |
Thread, lock/synchronized, Parallel.For |
| 13 | async et tokio |
async/await, CompletableFuture |
| 14 | Tests, docs, clippy, fmt | xUnit/JUnit, docs XML/Javadoc, analyseurs |
| 15 | Macros, unsafe et FFI (aperçu) |
générateurs de source, P/Invoke, JNI |
Un cours de suite, Rust en pratique : IX et cie, applique chacune de ces idées à du vrai code dans IX, hari et mes autres dépôts Rust.
Journal — ce que j’ai essayé, ce qui m’a surpris, ce qu’il me reste à vérifier.
Ressources
Section intitulée « Ressources »- The Rust Programming Language (« le Book ») — l’introduction officielle et gratuite.
- Rust by Example — de courts exemples exécutables.
- The Cargo Book — outil de build et gestionnaire de paquets.
- Documentation de la bibliothèque standard Rust.
- Rust Error Codes Index — chaque
E0xxxexpliqué, également disponible hors ligne avecrustc --explain E0382.