From 5660c21583161551ba80df149cb35fa39d4283a4 Mon Sep 17 00:00:00 2001 From: Orestis Malaspinas <orestis.malaspinas@hesge.ch> Date: Mon, 5 Nov 2018 16:49:18 +0100 Subject: [PATCH] ajout methodes enums --- methods.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/methods.md b/methods.md index 8f24523..28e2491 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<T> { + None, + Some(T), +} + +impl<T> Option <T> { + // 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 -- GitLab