为什么 Rust 中的 Box 这么称呼?

kik*_*ito 3 stack heap-memory rust

Box<>Rust Book 上是这样解释的:

...允许您将数据存储在堆上而不是堆栈上。保留在堆栈上的是指向堆数据的指针。

通过这样的描述,我希望所描述的对象被调用Heap<>或者其他东西(也许?)。相反,我们使用.HeapDerefHeapBox

为什么Box选择这个名字?

Mas*_*inn 5

首先,Heap堆是一个非常重载的术语,重要的是,堆是一种抽象数据结构,通常用于实现优先级队列等功能。调用一个Heap不是堆的类型会非常令人困惑,这是避免这种情况的一个很好的理由。

其次,“盒子”与“装箱”或“装箱”对象的概念相关,在强烈区分值类型和引用类型的语言中,例如 Java 或 Javascript:https: //en.wikipedia.org/wiki/Object_type_ (object -oriented_programming),其中“装箱”类型是值类型的堆分配版本,例如 java 中的 int/Integer 或 Javascript 中的 number/Number。

RustBox执行的操作在本质上是相似的。Box最初还有一个内置的“提升”运算符box(它仍然是一个内部操作,最初计划稳定以用于放置新的),因为这样的“盒子”/“装箱”在语言上以“堆”/“方式有意义”堆”确实没有(因为“堆”暗示很多东西被放在堆上)。