diff --git a/presentation/codes/borrowing/Cargo.toml b/presentation/codes/borrowing/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..b92eaa1d212c02d2d34126a1c1c4878df6f807d9
--- /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 0000000000000000000000000000000000000000..de78a228629b9c671e5ed543bfd3eee611e76691
--- /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
+}