Closure::new 和 Closure::wrap 有什么区别?
两者都用于创建闭包,但我想知道何时使用这些函数。
这很简单,
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
中。