====== Variables ====== ===== Constants par défaut ===== Toutes les variables sont constantes -- ou dit autrement, immuables -- par défaut. let x = 0; x = 5; // provoque une erreur, on ne peut changer x Pour rendre ''x'' mutable, il faut le déclarer. let mut x = 0; x = 5; // là c'est bon ===== Les types ===== Comme en [[nsi:langages:c:start|C]], on peut définir finement la taille des données. On pourra ainsi préciser le nombre d'octets codant un nombre entier selon les besoin de notre programme. * ''i8'' est le type entier 8 bits * ''i16'', pour 16 bits * ''i32'', pour 32 bits (même taille que le type ''int'' de [[nsi:langages:python:start|Python]]) * ''i64'' * ''i128'' Nous parlons ici d'entiers signés, c'est à dire qu'ils peuvent être négatif. Un entier de type ''i8'' pour donc aller de ''-128'' à ''127''. Mais si on sait que l'on n'utilisera que des entiers positifs, on peut utiliser des entiers non signés (//unsigned//) * ''u8'', entier non signé 8 bits, allant de ''0'' à ''255'' * ''u16'', ''u32'', ''u64'', ''u128'' même principe Pour les types flottants, on dispose des types simple précision (32 bits) et double précision (64 bits) * ''f32'' flottant 32 bits * ''f64'' flottant 64 bits Les chaînes de caractère on le type ''String''. Les slices sont des morceaux de tableaux. ==== Inférence de type ==== Quand le compilateur peut deviner le type utilisé, il n'est pas nécessaire de préciser. let i = 0; // i est de type entier mais on ne sait pas de quelle taille let j = 10i32; // max de type i32 if i < j { // j étant un i32, i doit l'être également println!("i est inférieur à j."); }