【发布时间】:2021-05-18 11:47:22
【问题描述】:
我知道 Rust 默认在堆栈上分配,但论文 Ownership is Theft 说 Rust 闭包通常是动态分配的(我认为这是“在堆上”的意思)。
【问题讨论】:
-
那篇论文发表于 2015 年 10 月。无装箱闭包于当年 1 月首次实施。我看不懂这篇论文,但很可能它的大部分内容是基于 1.0 之前的 Rust 版本编写的,默认情况下,闭包被装箱(相当于今天的
Box<dyn Fn...>)当您阅读研究报告时,通常必须牢记日期。 -
我在研究时发现了这些信息 - 但我想仔细检查一下,因为我找不到任何 Rust 文档说闭包在默认情况下肯定是堆栈分配的。 (当然这并不意味着它不存在。)不过还是谢谢你!
-
如果你对历史感兴趣,release notes for 1.0.0-alpha 会说:“闭包已经被 completely redesigned 实现为特征,现在可以用作泛型类型边界,因此可以单态化和内联,或者通过一个不透明的指针(装箱),就像在旧系统中一样。新系统通常被称为“未装箱”的闭包。”
-
这正是我一直在寻找的东西!非常感谢
标签: rust heap-memory stack-memory