我们有一个结构体LinkedList
:
struct XPipeline {
handlers: LinkedList<XHandler>,
}
XPipeline
是所有XHandler
对象的所有者,可以访问和修改它们。
我们已经有了处理程序列表;现在我们需要每个处理程序都可以引用列表中的邻居。也就是说,每个处理程序的方法可以引用处理程序的邻居,修改它们并调用它们的方法。
我的第一个想法是这样的:我为每个处理程序提供将引用邻居的字段prev
。next
通过在列表中添加一个新的处理程序,我用相应的引用初始化这些字段。现在我可以在所有处理程序的方法中使用这些引用。(在带有指针的 C++ 中这很容易)。
问题是:只允许一个所有者(即具有修改权限)。并且(所有处理程序的)所有者已经是一个XPipeline
对象。我该如何解决?也许,通过雇用:
handlers: Rc<RefCell<LinkedList<XHandler>>>
但具体如何?