我想实现一个简单的构建器,但是在处理生命周期时遇到了困难。以下代码会出现 "borrowed value does not live long enough" 的错误。这个问题看起来与这个问题类似。如果我将 t 存储在可变变量中并调用 s 和 finalize,则可以正常工作,但我希望让这个一行代码正常工作。我做错了什么?
struct Type<'a> {
s: &'a String,
}
struct TypeBuilder {
s: String,
}
impl TypeBuilder {
fn new() -> TypeBuilder {
TypeBuilder { s: "".to_string() }
}
fn s(&mut self, s: String) -> &mut TypeBuilder {
self.s = s;
self
}
fn finalize(&self) -> Type {
Type { s: &self.s }
}
}
fn main() {
let t = TypeBuilder::new()
.s("a".to_string())
.finalize();
println!("string: {}", t.s);
}
error[E0716]
error E0716: temporary value dropped while borrowed (rust) 提出了一个简明扼要的问题。它链接回这个问题。 - JamesThomasMoon