From e8295363f461923b76b6fc6d1270be515fef61ac Mon Sep 17 00:00:00 2001 From: Orestis Malaspinas <orestis.malaspinas@hesge.ch> Date: Tue, 22 Jan 2019 13:47:14 +0100 Subject: [PATCH] ended borrowing --- presentation/intro.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/presentation/intro.md b/presentation/intro.md index be2d852..7c264cb 100644 --- a/presentation/intro.md +++ b/presentation/intro.md @@ -326,6 +326,41 @@ fn main() { La référence est **vérouillée** personne d'autre ne peut modifier ou lire les données. +## En pratique (2/2) + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let mut notebook = Vec::new(); // par défaut notebook est immutable + + notebook.push("Il fait beau."); + notebook.push("Les oiseaux chantent."); + + { + let mut_borrow = &mut notebook; + notebook.len(); // only mut_borrow can read or write. + + mut_borrow.push("Je le peux."); + } // mutable borrow ends here + + notebook.push("Je le peux aussi à présent."); + +} +</code></pre> + +# Les lois de Rust + +## Les trois loi de la propriété + +1. Chaque valeur a une variable qui est son propriétaire (`owner`). +2. Une valeur ne peut avoir qu'un seul propriétaire à chaque instant. +3. Quand le programme sort de la portée du propriétaire, la valeur est détruite (`dropped`). + +## Les deux lois de l'emprunt + +1. On peut avoir autant de références **immutables** qu'on le shoutaire sur des données. +2. On ne peut avoir **une seule** référence mutable sur des données. + + <!-- - `vector` et `string` sont alignés en mémoire. - références "light". - destruction déterministe. --> -- GitLab