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(¬ebook); // on crée une référence et on la passe à borrow + borrow(¬ebook); // on peut réutiliser notebook + { + let n = ¬ebook; + borrow(n); + borrow(¬ebook); + } // la référence n est détruite + borrow(¬ebook); // on peut réutiliser notebook +} -- GitLab