diff options
| author | mo8it <mo8it@proton.me> | 2024-06-27 13:24:27 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-06-27 13:24:27 +0200 |
| commit | 275a854d6ec71e4cdde9b4d1943a4dd6e3368ab6 (patch) | |
| tree | d05d1218b5c3e4ec590805e61a55f70dd662590f /solutions | |
| parent | 7efccc36b4c26c444eab2531b6139190af569d6f (diff) | |
lifetimes2 solution
Diffstat (limited to 'solutions')
| -rw-r--r-- | solutions/16_lifetimes/lifetimes2.rs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/solutions/16_lifetimes/lifetimes2.rs b/solutions/16_lifetimes/lifetimes2.rs index 4e18198..b0f2ef1 100644 --- a/solutions/16_lifetimes/lifetimes2.rs +++ b/solutions/16_lifetimes/lifetimes2.rs @@ -1 +1,33 @@ -// Solutions will be available before the stable release. Thank you for testing the beta version 🥰 +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). + } +} |
