我有一個相當簡單的程序:是否可以返回在函數範圍內創建的引用?
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
我弄清失敗的原因。
- 我不知道如何返回在函數作用域內創建的引用。有沒有辦法做到這一點?
- 爲什麼一輩子不能被單一回報消滅?
編輯:我改變了標題,因爲它提示返回盒裝類型將有助於哪些不是(見答案)。
*我明白爲什麼它失敗* - 我不認爲這是完全正確的:-)如果你這樣做,你也應該明白爲什麼你不能這樣做。作爲一個思想實驗,如果你用''a'參數化了''a''來調用'f'會出現什麼情況? – Shepmaster