默认情况下,Rust闭包是堆栈分配还是堆分配?

我知道 Rust 默认在堆栈上分配,但论文所有权是盗窃说 Rust 闭包通常是动态分配的(我认为这意味着“在堆上”)。

回答

默认情况下,它们位于堆栈上。这可以通过证明在没有分配器的环境中允许闭包来证明,例如在 libcore 中。来自core::Option::map

pub fn map<U, F: FnOnce(T) -> U>(self, f: F) -> Option<U>

正如trentcl 所指出的:

如果您对历史感兴趣,1.0.0-alpha的发行说明说:

闭包已经完全重新设计以根据特征实现,现在可以用作泛型类型边界,因此可以进行单态和内联,或者像在旧系统中一样通过不透明指针(装箱)使用。新系统通常被称为“未装箱”的闭包。

也可以看看:

  • Rust 闭包如何工作以及它如何执行闭包?

以上是默认情况下,Rust闭包是堆栈分配还是堆分配?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>