我在努力理解生命的意义.我知道(我认为)用输入参数(即foo<;‘a>;(x:&;’a字符串)->;&;‘a字符串{})指定生存期意味着返回值继承输入参数的生存期,因此将一直存在.然而,下面的代码在没有任何输入参数的情况下编译得很好,所以我不明白编译器是如何知道我希望Dragon::Green的引用存在足够长的时间以离开作用域的.所有权是否正在向更高的范围转移,或者正在发生其他事情?
fn main() {
let d;
{
let dtile = testtile();
d = dtile;
}
println!("{:?}", d);
}
#[derive(PartialOrd, Ord, PartialEq, Eq, Debug)]
enum Dragon {
White,
Green,
Red
}
fn testtile<'a>() -> &'a Dragon {
&Dragon::Green
}