如何将特征绑定到web_sys :: HtmlElement :: from函数

时间:2020-03-01 12:11:48

标签: rust wasm-bindgen

对于类型为{{1}的e_text和类型为web_sys::HtmlDivElement的{​​{1}},此函数可为on_click回调建立一个闭包。编译并运行正常。

e_button

下一步是概括web_sys::HtmlButtonElement并将其移至let a = buildCbClosure(web_sys::HtmlElement::from(e_text)); fn buildCbClosure(mut e : web_sys::HtmlElement) -> Closure<dyn FnMut(web_sys::MouseEvent)> { let a = Closure::wrap(Box::new(move |event: web_sys::MouseEvent| { handleButtonClick(&event); e.set_text_content(Some("Text - Klik")); }) as Box<dyn FnMut(_)>); a } e_button.set_onclick(Some(a.as_ref().unchecked_ref())); 函数中,但是尚未在web_sys::HtmlElement::from上找到捕获此特征的特征。尝试了以下类似操作,这显然是错误方向上的buildCbClosure特性。另一个方向就像是e的不同子类型的一般向上转换:


From

礼物:

web_sys::HtmlElement

1 个答案:

答案 0 :(得分:1)

From性状的倒数是Into。如果O存在From<O>实现,则Into<T>将自动为类型T实现。

fn buildCbClosure(e : impl Into<web_sys::HtmlElement>) -> Closure<dyn FnMut(web_sys::MouseEvent)> {
    let mut e = e.into(); // `e` is an HtmlElement.
}

现在,可以传递给t的任何HtmlElement::from(t)都可以直接传递给buildCbClosure(t)