diff --git a/errors.md b/errors.md index f62fd19a66e675c70fe3ecf6c9bd11a56de4d9da..310f2ff5dc97b48392b4948bc637864fddd9dac1 100644 --- a/errors.md +++ b/errors.md @@ -12,41 +12,6 @@ sansfont: Sans Serif - L'erreur dont on peut se remettre. - Un résultat qui peut contenir une valeur ou pas. -# Options - -- Un type énuméré particulièrement utile est le type `Option`{.rust} - - ```{.lang-rust} - enum Option<T> { // <T> est une notation pour un type générique - Some(T), - None, - } - ``` -- Type utilisé lorsque une valeur peut être "quelque chose" ou "rien" (ex: recherche d'un élément dans un tableau). -- Exmple: la division - - <pre><code data-trim="hljs rust" class="lang-rust"> - fn main() { - let num = 1; - let denum = 4; - - let div = - if denum == 0 { - None - } else { - Some(num / denum) - }; - - match div { - Some(d) => println!("{} divisé par {} donne {}", num, denum, d), - None => println!("Cette division n'existe pas."), - } - } - </code></pre> - -- Il est commun que des fonction retournent des `Option`{.rust}. - - # Panique! ## `panic!()`{.rust} @@ -112,14 +77,83 @@ sansfont: Sans Serif 15: _start ``` -## `assert!()`{.rust} +## Asserts -- On peut utiliser deux macros forts utiles. +- On peut utiliser trois macros forts utiles. + +:::::::::::::: {.columns} +::: {.column width="50%"} - `assert!(cond, "Texte");`{.rust} - - N'importe quelle condition booléenne. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let num = 1; + let denum = 0; + + assert!(denum != 0, "Le dénominateur doit être non nul."); + let _total = num / denum; } +</code></pre> +::: +::: {.column width="50%"} - `assert_eq!(lhs, rhs, "Texte");`{.rust} - - On ne teste que l'égalité. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let a = 1; + let b = 0; + + assert_eq!(a, b, "A et b devraient être égales."); +} +</code></pre> +::: +:::::::::::::: + +- `assert_ne!(lhs, rhs, "Texte");`{.rust} + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let a = 1; + let b = 0; + + assert_ne!(a, b, "A et b devraient être différentes."); +} +</code></pre> + + +# Options + +- Un type énuméré particulièrement utile est le type `Option`{.rust} + + ```{.lang-rust} + enum Option<T> { // <T> est une notation pour un type générique + Some(T), + None, + } + ``` +- Type utilisé lorsque une valeur peut être "quelque chose" ou "rien" (ex: recherche d'un élément dans un tableau). +- Exmple: la division + + <pre><code data-trim="hljs rust" class="lang-rust"> + fn main() { + let num = 1; + let denum = 4; + + let div = + if denum == 0 { + None + } else { + Some(num / denum) + }; + + match div { + Some(d) => println!("{} divisé par {} donne {}", num, denum, d), + None => println!("Cette division n'existe pas."), + } + } + </code></pre> + +- Il est commun que des fonction retournent des `Option`{.rust}. # Résultat