我有一个非常简单的程序:
fn f<'a>() -> &'a i32 {
&1
}
fn main() {
println!("{}", f());
}
它无法编译(部分输出被省略):
$ rustc test.rs
test.rs:2:6: 2:7 error: borrowed value does not live long enough
test.rs:2 &1
我理解为什么它会失败。
- 我不知道如何返回在函数作用域内创建的引用。有办法可以做到吗?
- 为什么生命周期不能被省略为单个返回?
编辑:我更改了标题,因为它暗示返回装箱类型会有所帮助,但事实并非如此(请参见答案)。