Hello everyone,
I'm reading the rust book, and i'm asking myself why this code compile
// I toy version from my mind where i expected the same issue than the original one
use std::env;
fn main() {
let mut args = env::args();
let s1 = args.nth(1).unwrap();
let s2 = args.nth(0).unwrap();
let result = {
let r1 = s1.as_str();
let r2 = s2.as_str();
if r1.len() > r2.len() {
r1
} else {
r2
}
};
println!("the longest is {}", result)
}
whereas this one fail
// Original code from the rust book
fn longest(x: &str, y: &str) -> &str {
if x.len() > y.len() {
x
} else {
y
}
}
fn main() {
let string1 = String::from("abcd");
let string2 = "xyz";
let result = longest(string1.as_str(), string2);
println!("The longest string is {}", result);
}
To be more precise, I've tried to simply replace the function call by a block of code and i was expecting the same result (my rewriting should've failed too).
Thanks
PS : Example come from here
https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html