iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Rust · Intermédiaire

Rust

Apprendre Rust de zéro jusqu'à un vrai outil en ligne de commande : ownership, emprunts, enums, gestion d'erreurs, traits, génériques, durées de vie, itérateurs, tests, threads et async avec Tokio.

RustCargoédition 2024serdeclapTokio
01Introduction et installation02Variables, types, fonctions et contrôle de flux03Ownership et emprunts04Structs, enums et pattern matching05Collections et gestion d'erreurs06Traits et génériques07Durées de vie et pointeurs intelligents08Closures et itérateurs09Modules, crates et tests10Concurrence : threads, canaux et async11Projet : un gestionnaire de tâches en ligne de commande
Chapitre 1·20 min

Introduction et installation

Rust est un langage compilé, typé statiquement, sans ramasse-miettes. Compilé veut dire que le code devient un exécutable natif avant de tourner. Sans ramasse-miettes veut dire qu'aucun processus ne passe en arrière-plan libérer la mémoire : c'est le compilateur qui décide, dès la compilation, à quel moment chaque valeur est libérée. Ce mécanisme s'appelle l'ownership, et il occupe tout le chapitre 3.

Le résultat : des programmes aussi rapides qu'en C ou C++, sans les erreurs qui font planter ces langages (pointeur invalide, double libération, accès concurrent à une donnée). Si votre code compile, ces familles de bugs sont exclues.

Pourquoi Rust

DomaineExemples réels
Outils en ligne de commanderipgrep, fd, bat, uv, Ruff
Infrastructure et réseauLe proxy Pingora de Cloudflare, Firecracker d'AWS
SystèmesPilotes du noyau Linux, composants de Windows et d'Android
WebAssemblyCode qui tourne dans le navigateur à vitesse quasi native
Outillage JavaScriptTurbopack, Rolldown, SWC, Biome

Le point commun : des programmes où la performance et la fiabilité comptent toutes les deux. Pour un script jetable ou une API CRUD classique, Rust est souvent trop lourd. Go est plus simple pour écrire une API, et Python reste imbattable pour un script de dix lignes.

Mon avis : Rust vaut l'effort dès qu'un programme doit tourner longtemps sans surveillance, ou qu'il doit être rapide. Le compilateur strict devient alors un collègue qui relit chaque ligne.

Installer Rust

L'installation officielle passe par rustup, qui gère les versions du compilateur et des outils.

# macOS, Linux, WSL
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Sur Windows, téléchargez rustup-init.exe depuis rustup.rs. L'installateur propose d'installer les outils de compilation C++ de Visual Studio : acceptez, Rust en a besoin pour l'édition de liens.

Vérification :

rustc --version
cargo --version

Rust sort une nouvelle version toutes les six semaines. Mettre à jour se fait en une commande :

rustup update

Cargo, l'outil à tout faire

On n'appelle presque jamais rustc directement. cargo crée les projets, compile, lance les tests, télécharge les dépendances.

cargo new bonjour
cd bonjour
bonjour/
├── Cargo.toml
├── .gitignore
└── src/
    └── main.rs

Cargo.toml décrit le projet :

Cargo.toml
[package]
name = "bonjour"
version = "0.1.0"
edition = "2024"
 
[dependencies]

L'edition fixe les règles du langage utilisées pour ce projet. Rust ne casse jamais le code existant : une nouvelle édition, tous les trois ans, ne s'applique qu'aux projets qui la demandent. L'édition 2024 est la plus récente, c'est celle du cours.

Et src/main.rs :

src/main.rs
fn main() {
    println!("Bonjour, monde !");
}

fn main est le point d'entrée. println! se termine par un point d'exclamation parce que c'est une macro, pas une fonction : elle est développée en code au moment de la compilation, ce qui lui permet de vérifier le format de la chaîne.

Les commandes du quotidien

CommandeEffet
cargo runCompile et lance le programme
cargo checkVérifie que le code compile, sans produire d'exécutable. Beaucoup plus rapide
cargo build --releaseCompile avec les optimisations, dans target/release/
cargo testLance les tests
cargo fmtFormate le code selon le style officiel
cargo clippyLinter : signale le code correct mais maladroit
cargo add serdeAjoute une dépendance dans Cargo.toml
cargo doc --openGénère et ouvre la documentation du projet et de ses dépendances
cargo run
   Compiling bonjour v0.1.0 (/home/william/bonjour)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.42s
     Running `target/debug/bonjour`
Bonjour, monde !

Une habitude à prendre tout de suite : cargo check en boucle pendant que vous écrivez, cargo run quand ça compile. Et cargo clippy avant chaque commit. Clippy enseigne le Rust idiomatique mieux que n'importe quel livre.

Une différence de taille avec Python ou JavaScript : un binaire compilé en mode dev est lent. Pour mesurer une performance, utilisez toujours --release. L'écart peut dépasser un facteur 10.

L'éditeur

Installez rust-analyzer, le serveur de langage officiel. Il existe en extension pour VS Code, et il est intégré à RustRover, Zed, Helix et Neovim. Il affiche les types déduits en ligne, les erreurs au fil de la frappe et propose les imports. Sans lui, Rust est pénible. Avec, le compilateur devient une conversation.

Lire les erreurs du compilateur

Le compilateur Rust est célèbre pour ses messages d'erreur. Écrivons un bug exprès :

fn main() {
    let x = 5;
    x = 6;
    println!("{x}");
}
error[E0384]: cannot assign twice to immutable variable `x`
 --> src/main.rs:3:5
  |
2 |     let x = 5;
  |         - first assignment to `x`
3 |     x = 6;
  |     ^^^^^ cannot assign twice to immutable variable
  |
help: consider making this binding mutable
  |
2 |     let mut x = 5;
  |         +++

Le message localise l'erreur, explique la cause et propose la correction. rustc --explain E0384 donne une explication longue avec exemples. Prenez le temps de lire chaque erreur en entier : c'est le meilleur professeur de Rust.

Exercice

Créez un projet salut, et faites-lui afficher votre prénom et le résultat de 6 * 7. Lancez ensuite cargo build --release et retrouvez l'exécutable dans target/release/. Lancez-le directement, sans Cargo.

src/main.rs
fn main() {
    let prenom = "Ada";
    println!("Salut {prenom}, 6 x 7 = {}", 6 * 7);
}

{prenom} insère la variable du même nom, {} insère l'argument suivant.


Rust s'installe en une commande et Cargo fait le reste. La vraie courbe d'apprentissage commence au chapitre 3 avec l'ownership. Avant, le chapitre suivant pose les bases : variables, types, fonctions et boucles.

Suivant
Variables, types, fonctions et contrôle de flux

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main