mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-25 23:10:30 +00:00
lifetimes2 solution
This commit is contained in:
parent
7efccc36b4
commit
275a854d6e
2 changed files with 38 additions and 6 deletions
|
@ -1,6 +1,4 @@
|
|||
// So if the compiler is just validating the references passed to the annotated
|
||||
// parameters and the return type, what do we need to change?
|
||||
|
||||
// Don't change this function.
|
||||
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
|
||||
if x.len() > y.len() {
|
||||
x
|
||||
|
@ -10,11 +8,13 @@ fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
|
|||
}
|
||||
|
||||
fn main() {
|
||||
// TODO: Fix the compiler error by moving one line.
|
||||
|
||||
let string1 = String::from("long string is long");
|
||||
let result;
|
||||
{
|
||||
let string2 = String::from("xyz");
|
||||
result = longest(string1.as_str(), string2.as_str());
|
||||
result = longest(&string1, &string2);
|
||||
}
|
||||
println!("The longest string is '{}'", result);
|
||||
println!("The longest string is '{result}'");
|
||||
}
|
||||
|
|
|
@ -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).
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue