Rust中的入侵算法 我正在看锈编程语言,试图把C++思维转换成生锈。常见的数据结构,如列表和树,以前用C++中的指针实现,我不知道如何在RIST中实现精确的等效。我感兴趣的数据结构是侵入式算法,类似于Boost侵入式库中的内容,这些在嵌入式/系统编程中非常有用

Rust中的入侵算法 我正在看锈编程语言,试图把C++思维转换成生锈。常见的数据结构,如列表和树,以前用C++中的指针实现,我不知道如何在RIST中实现精确的等效。我感兴趣的数据结构是侵入式算法,类似于Boost侵入式库中的内容,这些在嵌入式/系统编程中非常有用,c++,rust,C++,Rust,Rust(Dlist)中的链表示例非常简单,但它使用了一种容器类型,其中实际类型位于容器内部。我正在寻找的侵入式算法有点相反:您有一个插入或继承列表节点的主类型 此外,Linux中著名的链表也是另一个示例,其中列表数据位于结构的成员中。这就像是入侵算法的Boost成员变体。这使您能够在多个列表/树中多次使用您的类型。这对生锈有什么影响 因此,我不确定如何将这些设计模式转换为我在C/C++中习惯的锈迹。任何成功理解这一点的人?Rust都希望你考虑所有权和寿命。谁拥有这些会员,他们能活多久 在Dli

Rust(Dlist)中的链表示例非常简单,但它使用了一种容器类型,其中实际类型位于容器内部。我正在寻找的侵入式算法有点相反:您有一个插入或继承列表节点的主类型

此外,Linux中著名的链表也是另一个示例,其中列表数据位于结构的成员中。这就像是入侵算法的Boost成员变体。这使您能够在多个列表/树中多次使用您的类型。这对生锈有什么影响


因此,我不确定如何将这些设计模式转换为我在C/C++中习惯的锈迹。任何成功理解这一点的人?

Rust都希望你考虑所有权和寿命。谁拥有这些会员,他们能活多久


在Dlist的问题中,答案是“容器”。对于侵入式算法,没有明确的答案。一个列表的成员可能会在另一个列表中重用,而其他成员则会在第一个列表中被销毁。最后,您可能希望使用引用计数()。

我认为有两种方法可以在Rust中实现类似的功能。让我们来看看图的实现,它通常使用入侵链接。 第一种方法依赖于
Rc
。您可以在此处找到更多详细信息:

第二种方法依赖于向量索引。您可以在此处找到更多信息:


我相信第二种方法更好,但我没有做过任何测试。

我对这些类型的数据结构没有太多经验,但您能解释一下您希望通过使用它们获得的一些好处吗?如果标准的Rust结构不适合您的用例,那么可能会有其他的东西适合您。您可能想看看它,它实现了一个入侵数据结构。