【发布时间】:2020-10-07 04:15:42
【问题描述】:
我正在尝试为结构实现类似特征的“setter”。请看下面的代码:
struct Buffer<'a>{
data: &'a i32
}
trait Setter {
fn set_value(& mut self, c: & i32) -> ();
}
impl<'b> Setter for Buffer<'b> {
fn set_value(& mut self, c: & i32) -> () {
self.data = c;
}
}
代码非常简单,set_value 函数所做的只是将 data 设置为等于 c。
当我尝试编译代码时,它无法以“引用的生命周期超过借用内容的生命周期”进行编译,我明白为什么会发生这种情况。实现子句的生命周期和函数本身的生命周期是有区别的。
我的问题是如何克服这个问题?我试图定义 set_value 的生命周期应该超过生命周期 'b 但随后我开始陷入特征签名和实际实现之间的问题。
【问题讨论】:
标签: rust