我有以下函数作为 Rust WASM 应用程序的一部分,用于将Box
ed 闭包转换为 JavaScript 函数的 Rust 表示。
use js_sys::Function;
type Callback = Rc<RefCell<Option<Closure<FnMut()>>>>;
fn to_function(callback: &Callback) -> &Function {
callback.borrow().as_ref().unwrap().as_ref().unchecked_ref()
}
但是,编译器抱怨返回值使用了借来的值(通过 获得callback.borrow()
),因此无法返回。
因此,我决定添加生命周期注释以通知编译器这个新引用应该与输入一样长。
use js_sys::Function;
type Callback = Rc<RefCell<Option<Closure<FnMut()>>>>;
fn to_function<'a>(callback: &'a Callback) -> &'a Function {
callback.borrow().as_ref().unwrap().as_ref().unchecked_ref()
}
不幸的是,这没有帮助,我得到了同样的错误。我在这里做错了什么?