summaryrefslogtreecommitdiff
path: root/rustlings/solutions/16_lifetimes
diff options
context:
space:
mode:
Diffstat (limited to 'rustlings/solutions/16_lifetimes')
-rw-r--r--rustlings/solutions/16_lifetimes/lifetimes1.rs24
-rw-r--r--rustlings/solutions/16_lifetimes/lifetimes2.rs29
-rw-r--r--rustlings/solutions/16_lifetimes/lifetimes3.rs18
3 files changed, 0 insertions, 71 deletions
diff --git a/rustlings/solutions/16_lifetimes/lifetimes1.rs b/rustlings/solutions/16_lifetimes/lifetimes1.rs
deleted file mode 100644
index 4f56834..0000000
--- a/rustlings/solutions/16_lifetimes/lifetimes1.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// The Rust compiler needs to know how to check whether supplied references are
-// valid, so that it can let the programmer know if a reference is at risk of
-// going out of scope before it is used. Remember, references are borrows and do
-// not own their own data. What if their owner goes out of scope?
-
-fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
- // ^^^^ ^^ ^^ ^^
- if x.len() > y.len() { x } else { y }
-}
-
-fn main() {
- // You can optionally experiment here.
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_longest() {
- assert_eq!(longest("abcd", "123"), "abcd");
- assert_eq!(longest("abc", "1234"), "1234");
- }
-}
diff --git a/rustlings/solutions/16_lifetimes/lifetimes2.rs b/rustlings/solutions/16_lifetimes/lifetimes2.rs
deleted file mode 100644
index 3ca4909..0000000
--- a/rustlings/solutions/16_lifetimes/lifetimes2.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
- if x.len() > y.len() { x } else { y }
-}
-
-fn main() {
- let string1 = String::from("long string is long");
- // Solution1: You can move `strings2` out of the inner block so that it is
- // not dropped before the print statement.
- let string2 = String::from("xyz");
- let result;
- {
- result = longest(&string1, &string2);
- }
- println!("The longest string is '{result}'");
- // `string2` dropped at the end of the function.
-
- // =========================================================================
-
- let string1 = String::from("long string is long");
- let result;
- {
- let string2 = String::from("xyz");
- result = longest(&string1, &string2);
- // Solution2: You can move the print statement into the inner block so
- // that it is executed before `string2` is dropped.
- println!("The longest string is '{result}'");
- // `string2` dropped here (end of the inner scope).
- }
-}
diff --git a/rustlings/solutions/16_lifetimes/lifetimes3.rs b/rustlings/solutions/16_lifetimes/lifetimes3.rs
deleted file mode 100644
index 16a5a68..0000000
--- a/rustlings/solutions/16_lifetimes/lifetimes3.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// Lifetimes are also needed when structs hold references.
-
-struct Book<'a> {
- // ^^^^ added a lifetime annotation
- author: &'a str,
- // ^^
- title: &'a str,
- // ^^
-}
-
-fn main() {
- let book = Book {
- author: "George Orwell",
- title: "1984",
- };
-
- println!("{} by {}", book.title, book.author);
-}