diff --git a/essential_rust.tex b/essential_rust.tex
index bb99847def573eda3ca94950811ea775a57a2a02..1987c6f0a7abdbf71b96f20d18cc77402b152f70 100644
--- a/essential_rust.tex
+++ b/essential_rust.tex
@@ -446,12 +446,13 @@ fn somme(vect: &Vec<usize>) -> usize {
 
 
 
+
 \section{Conditions et boucles}
 
 \begin{lstlisting}[style=Rust, language=Rust]
 fn main() {
     let age: u32 = 15;
-    
+
     if age < 18 {
         println!("Tu es mineur(e)");
     } else {
@@ -462,16 +463,33 @@ fn main() {
 
 \begin{lstlisting}[style=Rust, language=Rust]
 fn main() {
-    let array: [i32; 5] = [1, 2, 3, 4, 5]; 
+    let array: [char; 4] = ['a', 'b', 'c', 'd'];
 
     // On va itérer sur chacun des éléments du tableau
-    for elem in array.iter() {
-        println!("{}", elem);
-    }   // "1" "2" "3" "4" "5"
+
+    for elem in array.iter() {  // équivalent: for elem in \&array
+        print!("{} ", elem);
+    }  // affiche "a b c d "
+
+    for (index, elem) in array.iter().enumerate() {
+        print!("{}:{} ", index, elem);
+    }  // affiche "0:a 1:b 2:c 3:d "
+
+    for index in 0..array.len() {
+        print!("{}:{} ", index, array[elem]);
+    }  // idem
+
+    for elem in array.into_iter() {  // équivalent: for elem in array
+        print!("{} ", elem);
+    } // cette boucle semble très similaire à la première,
+      // mais il y a deux différences :
+      // - elem est de type char au lieu de \&char
+      // - array n'est plus utilisable ensuite
+
 
     // On va modifier (de manière impérative) chaque élément du tableau
     let mut vector: Vec<i32> = vec![10, 20, 30];
-    for elem in &mut vector {
+    for elem in vector.iter_mut() {  // équivalent: for elem in \&mut vector
         *elem += 50;
     }
 
@@ -504,6 +522,7 @@ fn main() {
 }
 \end{lstlisting}
 
+Il se trouve que les boucles et tests sont des expressions: voir \Cref{expressionsEverywhere}.
 
 
 \section{Structures, Enums et Pattern matching}