编辑:不重复。请阅读整篇文章。
说我有一个结构Foo<T>
:
struct Foo<T> {
data: T
}
由与Rc<RefCell<Foo<T>>>
类型的对象一起使用的实现使用。我需要返回对Foo<T>
:
fn get(&self, some_arg) -> &T {
// ... some code ...
// foo is of type Rc<RefCell<Foo<T>>>
&foo.borrow().data // this doesn't work
}
但Ref<'b, T>
返回的foo.borrow()
仅对get()
的范围有效,因此编译器会抱怨。我希望能够做到这一点:
// bar has the get() method above
let val = bar.get(some_arg); // bind val to a &T
// do stuff with val
我该怎么做?
编辑:我已经阅读了所有可能相关的其他SO帖子。这不是重复的。 Shepmaster建议的其他帖子都有不同的类型(不是Rc<RefCell<Foo<T>>>
):1)Rc
中没有Foo
- 包裹的成员。 2)在第二个&#34;重复&#34;中甚至没有RefCell
用法。交。