为什么Rust需要返回静态大小?

-1 garbage-collection rust

我认为Rust的一个重要特性是与C相当的系统语言,但是有垃圾收集器.如果是这种情况,为什么需要返回静态大小的值(或者Box从我收集的内容中使用)?

She*_*ter 10

为什么Rust需要返回静态大小?

每种语言中的每个值都需要具有静态大小.这就是编译器/解释器/运行时/虚拟机/硬件如何知道如何访问构成该值的位.

在许多语言中,每个值都与Rust相当Box,因此它们都占用了一个或两个指针的空间.这些值的静态已知大小允许一个间接层,可以指向具有运行时确定大小的内容.

在Rust(以及C,C++,可能还有其他系统语言)中,您还可以直接在堆栈中存储任意值,取消装箱.在这些情况下,您仍需要知道该值将占用的大小.

这是一种简化,因为某些语言允许某些特定值驻留在堆栈上,而其他语言则在固定大小的间接内部"嵌入"某些值类型.这些技巧通常是出于性能原因.

但有一个垃圾收集器

Rust 没有垃圾收集器.它有智能指针,当指针超出范围时释放资源.

Box是明显的智能指针,但也有RcArc.