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(¬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 +}