diff --git a/essential_rust.tex b/essential_rust.tex
index 445108cecafad1778229329e42e9ad029082f9a8..b96aed3dfa13c9eff653f525b907a4366469c7e4 100644
--- a/essential_rust.tex
+++ b/essential_rust.tex
@@ -353,40 +353,39 @@ fn main() {
 }
 \end{lstlisting}
 
-    // Il est possible de déstructurer le tuple...
-    let (a, b, c) = t;
+\section{Tableaux}
 
-    // ... ou bien de récupérer des éléments grâce à des index.
-    let s = t.1;
+Comme pour les chaînes de caractères, les tableaux se présentent sous plusieurs formes.
 
-    println!("{} {} {} {}", a, b, c, s);   // "1 Hello 3.4 Hello"
-}
-\end{lstlisting}
+Tous peuvent être modifié avec \texttt{tab[i] = v;} (à condition bien sûr qu'ils
+soient déclarés \texttt{mut}).
 
-\vspace{.5cm}
+\begin{itemize}
+    \item \texttt{Vec<Type>} : un tableau dynamique qui contient des éléments de type \texttt{T}.\\
+        Peut être redimensionné avec \texttt{push}.\\
+        Equivalent de \texttt{String} : un \texttt{String} est presque un
+        \texttt{Vec<char>} avec quelques méthodes en plus.\\~\\
+        D'ailleurs pour convertir de l'un à l'autre on dispose de\\
+        \texttt{let chaine: String = vecteur.iter().collect();}\\
+        \texttt{let vecteur: Vec<char> = chaine.chars().collect();}
+    \item \texttt{[Type; Taille]} (e.g. \texttt{[u64; 5]}) : un tableau de taille fixée connue.
+    \item \texttt{\&[Type]} : un tableau de taille fixée inconnue.\\
+        Équivalent de \texttt{\&str}.
+\end{itemize}
 
-Toute variable qui n'a pas de taille connue (vecteurs, chaîne de caractères...) sera stockée dans le tas.
+Ici encore on peut dans une certaine mesure convertir d'un type à un autre.
 
 \begin{lstlisting}[style=Rust, language=Rust]
 fn main() {
-    // Tableau de 5 éléments de \textbf{i32}.
-    let array: [i32; 5] = [1, 2, 3, 4, 5];
-
-    // Pour les tableaux, il n'existe pas une façon unique de les représenter.
-    // Ainsi, on utilise \textbf{{:?}} permettant d'afficher dans un format de débug.
-    println!("{:?}", array);   // "[1, 2, 3, 4, 5]"
+    let vector: Vec<usize> = vec![1, 2, 3];
+    let array: [usize; 3] = [1, 2, 3];
 
-    // Vecteur de \textbf{i32}.
-    // \textbf{vec!} permet d'initialiser des valeurs.
-    let mut vector: Vec<i32> = vec![1, 2, 3, 4];
+    let slice_of_full_vector: &[usize] = &vector;
+    let slice_of_partial_vector: &[usize] = &vector[..2];
+    let slice_of_full_array: &[usize] = &array;
 
-    // Ajout de la valeur \textbf{5} à la fin du vecteur.
-    vector.push(5);
-
-    // Slice d'un vecteur, cela fonctionne comme un slice d'une chaîne de caractères.
-    let slice: &[i32] = &vector;
-    
-    println!("{:?} {:?}", vector, slice);   // "[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]"
+    let vector_of_array = array.to_vec();
+    let vector_of_slice = &array[1..].to_vec();
 }
 \end{lstlisting}