0
我不知道如何正確地標題這篇文章。我對Rust很陌生,試圖按照這個簡單的結構編譯一個程序,但它似乎不正確,我不知道爲什麼。這裏結構必須超過會員參考
struct Bar;
impl Bar {
fn do_thing(&self) { println!("Ha, do nothing!") }
}
struct Foo<'a> {
bar: &'a Bar
}
impl<'a> Foo<'a> {
fn new(b: &Bar) -> Foo { Foo { bar: b } }
fn get_bar(&self) -> &Bar { self.bar }
}
fn main() {
let b = Bar;
let b_ref = {
let f = Foo::new(&b);
f.get_bar()
};
b_ref.do_thing();
}
編譯器錯誤聲稱f
不活足夠長的時間。不管多久,f
的生活 - b_ref
只要b
是有效的,我認爲參考文獻是Copy
,以便我們不必擔心f
中的實際參考。這是相關的嗎?
部分我覺得我需要指定從get_bar
返回的&Bar
的生存期,但我不知道如何將它綁定到Foo
結構的生命週期中?
我在這裏錯過了什麼?