Leçons du module (2/2)
Types primitifs
Rust est un langage à typage statique, ce qui signifie qu'il doit connaître le type de toutes les variables au moment de la compilation. Habituellement, le compilateur peut déduire le type en fonction de la valeur assignée, mais il est parfois nécessaire ou utile de le spécifier manuellement.
Les types primitifs en Rust se divisent en deux grandes catégories : scalaires (valeur unique) et composés (groupe de valeurs).
Types Scalaires
Les types scalaires représentent une valeur unique. Rust en possède quatre fondamentaux :
- Entiers : Nombres sans virgule. Ils peuvent être signés (
i8,i16,i32,i64,i128,isize) ou non signés (u8,u16,u32,u64,u128,usize). Le type par défaut esti32. - Nombres à virgule flottante : Nombres avec virgule. Ils peuvent être
f32ouf64(double précision, par défaut). - Booléens : Représentent la vérité logique avec
trueoufalse(typebool). - Caractères : Un seul point de code Unicode entouré de guillemets simples (type
char), ex.'a','ℤ', ou l'emoji'😻'.
Exemple d'annotation explicite du type :
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';
Types Composés
Les types composés peuvent regrouper plusieurs valeurs en un seul type. Rust possède deux types composés primitifs principaux :
Les Tuples
Un tuple regroupe des valeurs de différents types dans une collection de taille fixe :
let person: (String, i32) = (String::from("Alice"), 30);
// Destrutturazione per estrarre valori
let (name, age) = person;
// Accesso diretto con l'indice usando il punto (.)
let name_direct = person.0;
let age_direct = person.1;
Les Tableaux (Vecteurs à taille fixe)
Un tableau (array) regroupe plusieurs éléments du même type dans une collection à taille fixe stockée dans la pile (stack) :
let numbers = [1, 2, 3, 4, 5]; // Rilevato come [i32; 5]
let first = numbers[0]; // Accesso per indice
let third = numbers[2];
Si vous tentez d'accéder à un index en dehors des limites du tableau (ex. numbers[10]), Rust interrompra immédiatement l'exécution (panique) au moment de l'exécution au lieu de permettre des accès mémoire non autorisés.
Comparaison entre Tuples et Tableaux
| Caractéristique | Tuple | Tableau |
|---|---|---|
| Type des éléments | Peuvent être différents | Doivent être identiques |
| Taille | Fixe | Fixe |
| Accès | Via un point (.0, .1) | Via un index ([0]) |
À toi de jouer
Déclarez un tuple nommé stats contenant l'âge 30 (entier) et le score 95.5 (décimal). Affichez ensuite le score à l'écran en accédant directement au deuxième élément du tuple à l'aide de l'index.
Afficher l'indice
Créez le tuple avec `let stats = (30, 95.5);`. Accédez au deuxième élément en utilisant `stats.1` à l'intérieur de la macro `println!`.
Solution disponible après 3 tentatives
Déclarez un tableau nommé numbers contenant les valeurs entières de 1 à 5. Affichez à l'écran le troisième élément du tableau (index 2) à l'aide de println!.
Afficher l'indice
Déclarez le tableau avec `let numbers = [1, 2, 3, 4, 5];` et accédez au troisième élément en l'indexant avec `[2]`.
Solution disponible après 3 tentatives
Étant donné le tuple `let point = (10, 20);`, utilisez la déstructuration pour extraire les valeurs dans deux variables nommées `x` et `y`. Affichez ensuite la somme de `x` et `y`.
Afficher l'indice
Utilisez la syntaxe `let (x, y) = point;` pour déstructurer le tuple, puis additionnez les variables dans le `println!`.
Solution disponible après 3 tentatives