【发布时间】:2015-04-06 09:04:56
【问题描述】:
我正在尝试实现一个简单的构建器,但在生命周期中挣扎。以下是给error: borrowed value does not live long enough。 This question 看起来很相似。如果我将t 存储在一个可变变量中,然后调用s 并最终确定它可以工作,但我想让一个班轮工作。我究竟做错了什么?
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) 提出了一个简洁的问题。它链接回这个问题。
标签: rust