fn max_num<'a>(x: &'a i32, y: &'a i32) -> &'a i32 {
if x > y {
&x
} else {
&y
}
}
fn main() {
let x = 1; // -------------+-- x start
let max; // -------------+-- max start
{ // |
let y = 8; // -------------+-- y start
max = max_num(&x, &y); // |
} // -------------+-- y over
println!("max: {}", max); // |
}
这段代码会正常报错 提示borrowed value does not live long enough
fn main() {
let g;
let s1 = "ASd";
{
let s2 = "asad";
g = longer(s1,s2);
}
println!("{} is longer", g);
}
fn longer<'a>(s1:&'a str, s2:&'a str) -> &'a str {
if s2.len() > s1.len() {
s2
} else {
s1
}
}
但是上面这段代码却可以通过编译正确执行。 麻烦问下为什么可以通过编译。
1
共 2 条评论, 1 页
评论区
写评论感谢感谢
--
👇
gwy15: s1 和 s2 都是 &'static str,你改成 String 一样报错
s1 和 s2 都是 &'static str,你改成 String 一样报错