在下面的代码中,get_x 方法返回对包含在本地 var 中的字符串切片的引用。生命周期注释 &'a 表示返回的引用至少与调用该方法的 Foo 实例一样有效。
但是我返回对局部变量的引用,所以:
struct Foo<'a> {
x: &'a str,
}
impl<'a> Foo<'a> {
fn get_x(&self) -> &'a str {
"inside"
}
}
fn main() {
let s1 = "hello";
let a;
{
let foo = Foo { x: s1 };
a = foo.get_x();
}
println!("x = {}", a); // undefined behavior!
println!("x = {}", a.len()); // may crash or produce incorrect results, but it dose not, why?
}