From f5a46e062cab57e95be1b0cef4752b6cb75bf387 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 15 Nov 2021 18:28:59 +0100 Subject: [PATCH] Learn Ownerships --- src/ownership/strings.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/ownership/strings.rs diff --git a/src/ownership/strings.rs b/src/ownership/strings.rs new file mode 100644 index 0000000..ee190f9 --- /dev/null +++ b/src/ownership/strings.rs @@ -0,0 +1,31 @@ +fn main() { + let mut s = String::from("Hello"); + s.push_str(", World!"); + println!("{}", s); + + let s2 = "Hello"; + //s2.push_str(", World!"); Error + println!("{}", s2); + + let s3 = s; + println!("{}", s3); + //println!("{}", s); The value is borrowed + + let s4 = s3.clone(); + println!("s3 = {}, s4 = {}", s3, s4); + + let (s5, taille) = calculer_taille(s4); + println!("s5 = {}, taille = {}", s5, taille); + + let taille2 = taille_sans_possession(&s5); + println!("s5 = {}, taille = {}", s5, taille2); +} + +fn calculer_taille(s: String) -> (String, usize) { + let taille = s.len(); + (s, taille) +} + +fn taille_sans_possession(s: &String) -> usize { + s.len() +} \ No newline at end of file