diff --git a/methods.md b/methods.md
index 8f2452316ef2e64af51aa10a7f10acfae0af7ed7..28e2491a9f4c16436d0347e08a3cca8a050ca14e 100644
--- a/methods.md
+++ b/methods.md
@@ -17,7 +17,7 @@ sansfont: Sans Serif
 	- Elles ne sont définies que dans le cadre d'une `Struct` (ou d'un `Enum`{.rust} ou d'un `trait object`{.rust}).
 	- Leur premier paramètre est **toujours** `self`{.rust} qui est une instance de la structure sur laquelle la méthode est appelée.
 
-# Définition d'une méthode
+# Définition d'une méthode (`struct`{.rust})
 
 ## Le mot-clé `self`{.rust} (1/2)
 
@@ -86,6 +86,33 @@ fn main() {
 	- Certaines méthodes peuvent ne pas être accessibles à l'utilisateur de l'instance d'une structure (`pub`).
 - Permet d'éviter de taper le type de `self` dans chaque signature de fonctions.
 
+# Définition d'une méthode (`enum`{.rust})
+
+## Généralités
+
+- Comme pour un `struct`{.rust} on définit une méthode dans un bloc `impl`{.rust}.
+- Comme pour un `struct`{.rust} on le premier paramètre d'une méthode est `self`{.rust}.
+
+## Exemple: Implémentation de `is_some`{.rust}
+
+<pre><code data-trim="hljs rust">
+enum Option&lt;T&gt; {
+    None,
+    Some(T),
+}
+
+impl&lt;T&gt; Option &lt;T&gt; {
+	// teste si l'option est Some     
+    pub fn is_some(&self) -> bool {
+        match *self { // on déréférence pour faire le match
+            Some(_) => true,
+            None => false,
+        }
+    }
+}
+</code></pre>
+
+
 # Fonctions associées
 
 ## Généralités