我认为Rust的一个重要特性是与C相当的系统语言,但是有垃圾收集器。如果是这种情况,为什么需要返回静态大小的值(或者从我收集的内容中使用Box
)?
答案 0 :(得分:10)
为什么Rust需要返回静态大小?
每种语言中的每个值都需要具有静态大小。这就是编译器/解释器/运行时/虚拟机/硬件如何知道如何访问构成该值的位。
在许多语言中,每个值都与Rust Box
相当,因此它们都占用了一个或两个指针的空间。这些值的静态已知大小允许一个间接层,可以指向具有运行时确定大小的内容。
在Rust(以及C,C ++,可能还有其他系统语言)中,您还可以直接在堆栈中存储任意值,并取消装箱。在这些情况下,您仍然需要知道该值占用的大小。
这是一种简化,因为某些语言允许某些特定值驻留在堆栈上,而其他语言则在固定大小的间接内部“嵌入”某些值类型。这些技巧通常是出于性能原因。
但是有垃圾收集器
Rust does not have a garbage collector。它有智能指针,当指针超出范围时,它会解除分配资源。