一种安全的区域分配器,它通过使用代际索引来解决 ABA 问题,从而允许删除操作。
generational-arena这是一种安全的区域分配器,它通过使用代际索引来避免 ABA 问题 而不受影响。灵感来自 Catherine West 在 RustConf 2018 的闭幕主题演讲,其中这些想法(以及更多!) 都在游戏编程的实体-组件-系统上进行了介绍。
使用共享所有权与内部可变性(即 Rc 或 Arc)或借用引用(即 &a T或&a mut T)来表示结构是没有意义的。循环排除引用计数类型,而所需的共享可变性排除了借用。此外,生命周期是动态的,不遵循借用数据比借用者更长寿命的规则。在这样的情况下,人们很容易想到将对象存储在 Vec 中,并通过它们的索引相互引用。不再有借用检查器或所有权问题了!通常,这种解决方案就足够了。
破坏了删除元素之后的每个元素的索引,或者
obj1 尝试在索引 i 上获取 obj2, 但错误地得到 obj3, 而实际上应该失败。
暂无开放 Issues,或尚未同步最近议题。