Rust enforce/implement RAII 是如何实现的

How does Rust enforce/implement RAII

我正在研究一种(也许)严肃的编程语言,并且想了解如何实现内存管理。我希望这种语言强制执行 RAII,类似于 Rust,但与 Rust 不同的是,这种语言是面向对象的,我希望我可以实现管理自己内存的对象(如 Rust 中的 Boxes)。谁能详细说明 Rust 如何处理对堆内存的引用?

我认为实现 classes 最明显的方法是:

  • 您的 class 变量作为指针实现,就像在 C# 和 Java 中一样。
  • 对象只有一个所有者,所有 class 变量都具有移动语义以强制执行此操作,就像在 Rust 中一样。
  • 内存是需要清理的资源,因此所有 class 变量在调用引用对象的析构函数(如果有的话)之后,还调用内存分配器的释放例程,如C++.
  • 您在类型系统中引入了生命周期,以确保 lending/borrowing 对象不允许任何非拥有引用超过它,就像在 Rust 中一样。