lifetimes1 solution

This commit is contained in:
mo8it 2024-06-27 13:24:21 +02:00
parent 64c2de95ca
commit 7efccc36b4
3 changed files with 42 additions and 8 deletions

View file

@ -3,6 +3,7 @@
// 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?
// TODO: Fix the compiler error by updating the function signature.
fn longest(x: &str, y: &str) -> &str {
if x.len() > y.len() {
x
@ -12,9 +13,16 @@ fn longest(x: &str, y: &str) -> &str {
}
fn main() {
let string1 = String::from("abcd");
let string2 = "xyz";
let result = longest(string1.as_str(), string2);
println!("The longest string is '{}'", result);
// 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");
}
}

View file

@ -821,9 +821,8 @@ You may need this:
[[exercises]]
name = "lifetimes1"
dir = "16_lifetimes"
test = false
hint = """
Let the compiler guide you. Also take a look at the book if you need help:
Let the compiler guide you. Also take a look at The Book if you need help:
https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html"""
[[exercises]]

View file

@ -1 +1,28 @@
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
// 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");
}
}