Dyon Tutorial说它使用“生存期”,而不是垃圾回收或手动内存管理。但是,该生命周期模型与Rust中的所有权有何不同?
Dyon由于缺少垃圾收集器而具有有限的内存模型。该语言旨在解决此限制。 -Dyon编程语言教程
此模型有多严格的限制?由于此限制,Dyon无法运行内存管理代码的示例吗?
链接的Dyon book仅包含对此的解释:
寿命是关于参考的
生存期与存储在变量内的引用有关。所有引用都超出了它们存储在其中的变量。变量无法存储对其自身的引用,因为它自身无法生存。
为了将引用放入变量中,生存期检查器必须知道引用的寿命超过了变量。
由于寿命检查程序,Dyon中的所有内存都是非循环图。
因此,主要限制是引用不能进行任何循环。也就是说,不可能表示圆形节点列表,也不能让子对象保留对其父对象的引用。
这些限制也适用于Rust,但Rust还提供了解决方法。引用计数类型(Rc
和Arc
)与弱引用(请参见std::rc::Weak
)结合使用,可以创建循环引用。也可以在std::rc::Weak
构造(即原始指针)之后进行循环。
另请参见(特定于铁锈,但适用大多数原则):
unsafe