根据Rust编程语言的说法:
由于作用域总是嵌套的,因此另一种表达方式是通用生命周期
在主函数中,“x和y寿命较短的那个”是嵌套作用域。这也应该是
为什么这段代码能正常工作?
由于作用域总是嵌套的,因此另一种表达方式是通用生命周期
'a
将获得等于x
和y
寿命较小者的具体寿命。fn main() {
let x = "abcd";
let result;
{
let y = "qwerty";
result = longest(x, y);
}
println!("The longest string is {} ", result);
}
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
在主函数中,“x和y寿命较短的那个”是嵌套作用域。这也应该是
result
中值的寿命,但结果包含了来自嵌套作用域之外的正确值。为什么这段代码能正常工作?