gpt4 book ai didi

rust - 在实现特性时定义预期生命周期

转载 作者:行者123 更新时间:2023-12-03 11:41:34 24 4
gpt4 key购买 nike

我正在尝试为结构实现“特质”,如特征。请参见下面的代码:

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函数所做的就是将 数据设置为等于
当我尝试编译代码时,它无法通过“引用的生存期超过借用内容的生存期”来进行编译,这我知道为什么会这样。实现子句的生命周期和函数本身之间存在差异。
我的问题是我该如何克服?我试图定义set_value的生存期应该超过生存期'b,但是随后我开始陷入特征签名与实际实现之间的问题。

最佳答案

这些生命周期需要更深入地渗透到您的实现中,如下所示:

struct Buffer<'a>{
data: &'a i32
}

trait Setter<'b> {
fn set_value(&'b mut self, c: &'b i32) -> ();
}

impl<'b> Setter<'b> for Buffer<'b> {
fn set_value(&'b mut self, c: &'b i32) -> () {
self.data = c;
}
}
这就是说“ Buffer的生存期不会超过给定的 c的生存期”。

关于rust - 在实现特性时定义预期生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64237108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com