如何返回带有rust中引用的结构?

如何返回带有rust中引用的结构?,rust,lifetime,crossbeam,Rust,Lifetime,Crossbeam,我正在使用crossbeamepoch在rust中编写一个无锁数据结构crossbeam epoch使用guard加载堆分配的原子指针。数据结构接口的一个示例是: fn get(&self,index:IndexType,guard:&'guard-guard)->选项 } 恳求{ 让防护装置=销(); 让value=self.get(索引和保护); 返回型{ 卫兵:卫兵, 价值:价值 } } } 但是编译器不允许我这么做 我的问题是如何实现方法My_get?这个问题需要一些改进。您应该始终添

我正在使用
crossbeamepoch
在rust中编写一个无锁数据结构
crossbeam epoch
使用
guard
加载堆分配的原子指针。数据结构接口的一个示例是:

fn get(&self,index:IndexType,guard:&'guard-guard)->选项
}
恳求{
让防护装置=销();
让value=self.get(索引和保护);
返回型{
卫兵:卫兵,
价值:价值
}
}
}
但是编译器不允许我这么做


我的问题是如何实现方法
My_get

这个问题需要一些改进。您应该始终添加一个,但也没有显示编译器错误是什么

无论如何,在代码中,您只是忘记了指定生命周期应该链接到什么。如果防护装置的寿命至少与
self
一样长,则应使用以下内容声明您的方法:

fn my_get<'guard>(&'guard self, index: IndexType) -> ReturnType<'guard, Value> {

fn我的返回类型我将尝试解决您的问题。但首先,指针是共享的吗?如果是,我认为
Arc
将是一个很好的选择,如果不是,那么
Box
is@sb27谢谢你的帮助。指针是共享的,但我认为不管我们是否使用
Arc
。因为如果横梁不再使用,它有责任将其销毁。但是
至少与
自身
寿命一样长,不是吗?