Skip to content
Snippets Groups Projects
Commit 5660c215 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

ajout methodes enums

parent c0745f96
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment