data-structures - 在 Rust 中实现类图数据结构

标签 data-structures rust ownership

我有一个数据结构,它可以表示为一些与链接对象链接的结构之间的单向图,因为链接包含元数据。

看起来像这样:

struct StateMachine {
    resources: Vec<Resource>,
    links: Vec<Link>,
}
struct Resource {
    kind: ResourceType,
      // ...
}

enum LinkTarget {
    ResourceList(Vec<&Resource>),
    LabelSelector(HashMap<String, String>),
}

struct Link {
    from: LinkTarget,
    to: LinkTarget,
    metadata: SomeMetadataStruct,
}

整个结构需要可变,因为我需要能够在运行时添加和删除链接和资源。因此,我无法使用正常的生命周期模型并将资源绑定(bind)到父结构的生命周期。

我知道我需要 to "choose my own guarantee"通过选择适当的类型,但我不确定解决此问题的最佳方法是什么。

最佳答案

在 Rust 中建模类图结构不是一个简单的问题。 这里有来自 Nick Cameron 和 Niko Matsakis(Mozilla 的两位主要 Rust 开发人员)的两个有值(value)的讨论。

Graphs and arena allocation

Modeling Graphs in Rust Using Vector Indices

关于data-structures - 在 Rust 中实现类图数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747464/

相关文章:

c - 相同类型结构的指针内的结构

algorithm - 使用矩阵在 O(1) 时间内回答查询

tcp - BufWriter::write() 不会将字节写入 TcpStream

c++ - 公开类拥有的资源的正确方法是什么?

pointers - 指向 Result<Vec<f64>, _> 中向量第一个元素的指针已损坏

algorithm - 从间隔列表中有效地找到重叠间隔

c++ - 测量大型方形网格中的簇有哪些好的替代方法?

rust - Rust借阅检查器是否在本地或全局分析程序?

rust - 从函数返回扭曲过滤器

rust - 无法为返回引用的闭包推断适当的生存期