From 60da70906bfce15e1459f92eae0ec8132eb7de08 Mon Sep 17 00:00:00 2001
From: Orestis Malaspinas <orestis.malaspinas@hesge.ch>
Date: Fri, 11 Jan 2019 12:41:56 +0100
Subject: [PATCH] added borrow example

---
 presentation/codes/borrowing/Cargo.toml  |  7 +++++++
 presentation/codes/borrowing/src/main.rs | 19 +++++++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 presentation/codes/borrowing/Cargo.toml
 create mode 100644 presentation/codes/borrowing/src/main.rs

diff --git a/presentation/codes/borrowing/Cargo.toml b/presentation/codes/borrowing/Cargo.toml
new file mode 100644
index 0000000..b92eaa1
--- /dev/null
+++ b/presentation/codes/borrowing/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "borrowing"
+version = "0.1.0"
+authors = ["Orestis Malaspinas <orestis.malaspinas@hesge.ch>"]
+edition = "2018"
+
+[dependencies]
diff --git a/presentation/codes/borrowing/src/main.rs b/presentation/codes/borrowing/src/main.rs
new file mode 100644
index 0000000..de78a22
--- /dev/null
+++ b/presentation/codes/borrowing/src/main.rs
@@ -0,0 +1,19 @@
+fn borrow(_notebook: &Vec<&str>) { // _notebook prend l'ownership de la référence vers un Vec
+    // on peut lire les données contenues dans notebook
+} // la référence est détruite, les données sont rendues à notebook
+
+fn main() {
+    let mut notebook = Vec::new(); // par défaut notebook est immutable
+
+    notebook.push("Il fait beau.");
+    notebook.push("Les oiseaux chantent.");
+
+    borrow(&notebook); // on crée une référence et on la passe à borrow
+    borrow(&notebook); // on peut réutiliser notebook
+    {
+        let n = &notebook;
+        borrow(n);
+        borrow(&notebook);
+    } // la référence n est détruite
+    borrow(&notebook); // on peut réutiliser notebook
+}
-- 
GitLab