Aller au contenu

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