我正在使用crossbeam-epoch
rust 编写无锁数据结构。crossbeam-epoch
使用 aguard
加载堆分配的原子指针。数据结构接口的一个示例是:
fn get(&self, index: IndexType, guard: &'guard Guard) -> Option<&'guard Value>
此方法需要guard
与返回值的引用具有相同生命周期的 a。
现在,我想在不提供Guard
. 例如:
struct ReturnType<'guard, Value> {
guard: Guard,
value: Option<&'guard Value>
}
impl<'guard, Value> MyDataStructure<Value> {
fn my_get(&self, index: IndexType) -> ReturnType<'guard, Value> {
let guard = pin();
let value = self.get(index, &guard);
ReturnType {
guard: guard,
value: value
}
}
}
但是编译器不允许我这样做。
我的问题是如何实现该方法my_get
?