0
我試圖在Rust中使用builder pattern,但是出現編譯錯誤。無法編譯Rust構建器模式,因爲借用的值不夠長
pub struct DynamicParams {
port: Option<u16>,
}
impl DynamicParams {
pub fn new() -> Self {
DynamicParams { port: None }
}
pub fn port(&mut self, port: u16) -> &mut Self {
self.port = Some(port);
self
}
}
fn main() {
let params = DynamicParams::new().port(1);
}
這是available on play.rust-lang.org。
錯誤:
error: borrowed value does not live long enough
--> <anon>:17:18
|>
17 |> let params = DynamicParams::new().port(1);
|> ^^^^^^^^^^^^^^^^^^^^ does not live long enough
note: reference must be valid for the block suffix following statement 0 at 17:46...
--> <anon>:17:47
|>
17 |> let params = DynamicParams::new().port(1);
|> ^
note: ...but borrowed value is only valid for the statement at 17:4
--> <anon>:17:5
|>
17 |> let params = DynamicParams::new().port(1);
|> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: consider using a `let` binding to increase its lifetime
--> <anon>:17:5
|>
17 |> let params = DynamicParams::new().port(1);
|> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error
但是儘可能接近我所看到的,這是非常相似的builder pattern, as described in the Rust book。這是怎麼回事?我究竟做錯了什麼?
我正在使用Rust 1.11。
謝謝!我已經改變了我的getter方法來處理擁有的對象,並返回它。未提及。然後我不需要'.finalize()' – Rory