Rust wasm 中的 Closure::new 和 Closure::wrap 有什么区别

问题描述 投票:0回答:1

Closure::newClosure::wrap 有什么区别?

两者都用于创建闭包,但我想知道何时使用这些函数。

rust webassembly wasm-bindgen
1个回答
0
投票

这很简单,

Closure::new
所做的就是将闭包放入
Box
中,取消其大小并委托给
wrap
,正如您通过查看代码可以看到的那样:

    pub fn new<F>(t: F) -> Closure<T>
    where
        F: IntoWasmClosure<T> + 'static,
    {
        Closure::wrap(Box::new(t).unsize())
    }

因此,当您有一个裸露的 Rust 闭包或函数时,请使用

Closure::new
;当您的闭包已经是 Box 中包含的特征对象时,请使用
wrap
,因为
new
会将其包装在额外的
Box
中。

© www.soinside.com 2019 - 2024. All rights reserved.