Rust¶
Langage système moderne créé par Graydon Hoare chez Mozilla Research, Rust garantit la sécurité mémoire sans garbage collector grâce à son système d'ownership. Adopte par le noyau Linux depuis la version 6.1, il s'impose pour les outils système, le WebAssembly et les services cloud performants.
graph LR
A["Histoire"] --> B["Frameworks"]
B --> C["Exemples"]
C --> D["Tests"]
D --> E["Construction"]
E --> F["Bonnes pratiques"]
F --> G["Ecosysteme"] Ce que vous allez apprendre¶
À la fin de ce tutoriel, vous serez capable de :
- Situer Rust dans son évolution de Mozilla Research à la Rust Foundation et l'adoption dans le noyau Linux
- Choisir un framework adapté (Actix Web, Axum, Rocket) et utiliser le runtime async Tokio
- Implémenter une API REST CRUD avec Axum + SQLx et compiler vers WebAssembly avec wasm-pack
- Mettre en place des tests avec #[test], mockall, proptest et criterion pour les benchmarks
- Construire et distribuer avec Cargo, la cross-compilation musl et Docker scratch/distroless
- Appliquer les idiomes Rust (ownership, borrowing, opérateur ?) et les zero-cost abstractions
Parcours¶
| Section | Contenu |
|---|---|
| Histoire | De Graydon Hoare chez Mozilla à la Rust Foundation, editions 2015 a 2024, adoption dans le noyau Linux |
| Frameworks courants | Comparatif Actix Web, Axum, Rocket, Warp, runtime async Tokio, CLI avec Clap, écosystème Serde/SQLx/Tower |
| Exemples d'implementation | API REST CRUD avec Axum + SQLx + thiserror, parseur de logs performant, compilation WebAssembly avec wasm-pack |
| Tests | Tests intégrés #[test], tower::ServiceExt, mockall, proptest, criterion benchmarks, insta snapshots, coverage |
| Construction & packaging | Cargo, workspaces, features, cross-compilation musl, crates.io, Docker scratch/distroless, CI/CD |
| Bonnes pratiques | Ownership et borrowing, opérateur ?, From/Into, builder et newtype patterns, thiserror vs anyhow, zero-cost abstractions |
| Ecosysteme | VS Code + rust-analyzer, RustRover, rustfmt, Clippy, cargo-audit, cargo-deny, Miri, CodeLLDB, flamegraph |