我正在看着Rust的编程语言,并尝试将C的思维转换为Rust.常见的数据结构,如列表和树,以前已经用C中的指针实现了,我不知道如何在Rust中实现确切的等价物.我感兴趣的数据结构是入侵算法,类似于Boost侵入库中的数据结构,这些算法在嵌入式/系统编程中非常有用.
Rust(Dlist)中的链表示例很简单,但是它使用容器类型,其中实际类型在容器内.我正在寻找的侵入式算法有一点相反:您有一个主要类型,列表节点插入或继承.
此外,Linux中的着名链表也是其中列表数据位于结构成员中的另一个示例.这就像Boost成员变体的入侵算法.这使您可以在多个列表/树中使用您的类型多次.如何与Rust合作?
所以我不确定如何将这些设计模式转换为在C/C++中习惯的Rust.任何有成功的人都了解了这一点?
解决方法
Rust想让你考虑所有权和生命周期.谁拥有会员,他们会活多久?
在Dlist的问题上,答案是“容器”.使用入侵算法没有明确的答案.一个列表的成员可能会在另一个列表中重用,而其他列表的成员可能被第一个列表破坏.最终你可能想使用引用计数(std::sync::Arc).