Rappel des concepts essentiels de Rust : syntaxe, types, ownership et bonnes pratiques.
cargo new mon_projet → Créer un nouveau projetcargo build → Compiler le projetcargo run → Compiler et exécutercargo check → Vérifier sans compilercargo build --release → Build optimisé pour productionlet x = 5; → Variable immutable (par défaut)let mut x = 5; → Variable mutableconst MAX: i32 = 100; → Constante (toujours typée)Note : En Rust, les variables sont immutables par défaut. Utilise mut pour les modifier.
i8, i16, i32, i64, i128 → Entiers signésu8, u16, u32, u64, u128 → Entiers non signés (positifs)let age: i32 = 25;let count: u32 = 100;f32 → Flottant 32 bitsf64 → Flottant 64 bits (défaut)let price: f64 = 19.99;let is_active: bool = true;let lettre: char = 'A';let s: &str = "hello"; → String slice (référence, immutable)let s: String = String::from("hello"); → String (modifiable, heap)println!("Hello"); → Affiche du texteprintln!("x = {}", x); → Affiche une variableprintln!("{} + {} = {}", a, b, sum); → Plusieurs valeursprintln!("{:?}", vecteur); → Debug print (pour tableaux/vecteurs)Note : Le ! indique que c'est une macro, pas une fonction.
if condition { ... }if ... else { ... }if ... else if ... else { ... }If comme expression :
let status = if age >= 18 { "adulte" } else { "mineur" };for i in 0..5 { } → De 0 à 4 (5 exclus)for i in 0..=5 { } → De 0 à 5 (5 inclus)for elem in &vecteur { } → Itérer sur un vecteurwhile condition { ... }loop { ... break; } → Boucle infinie avec break pour sortirfn ma_fonction() { } → Sans paramètres ni retourfn add(a: i32, b: i32) -> i32 { a + b } → Avec retour implicitefn carre(x: i32) -> i32 { return x * x; } → Retour explicitefn afficher(nom: &str, age: i32) { } → Plusieurs paramètresNote : Sans ; à la fin, la dernière expression est le retour implicite.
Taille fixe, définie à la compilation.
let arr: [i32; 5] = [1, 2, 3, 4, 5];arr[0] → Accès au premier élémentarr.len() → Longueur du tableauTaille dynamique, comme une liste.
let mut v = vec![10, 20, 30]; → Créer un vecteurv.push(40); → Ajouter un élémentv[1] → Accéder à l'index 1v.len() → Nombre d'élémentsfor n in &v { } → Itérer sur le vecteurConcept clé de Rust pour la gestion mémoire sans garbage collector.
let s1 = String::from("hello");let s2 = s1; → s1 est déplacé vers s2, s1 n'est plus validelet s2 = s1.clone(); → Copie profonde, s1 reste validelet a = 5; let b = a; → a et b sont validesPermet d'utiliser une valeur sans en prendre la propriété.
&variable → Référence immutable (lecture seule)&mut variable → Référence mutable (lecture/écriture)Règles :
Fichier de configuration du projet.
[package] → Infos du projet (name, version, edition)[dependencies] → Dépendances externes