如何从没有命名空间的JavaScript调用Rust函数?

时间:2018-06-28 12:42:03

标签: javascript rust

我正在使用stdweb library从JavaScript调用Rust函数:

#[js_export]
fn handleClick(e: Value) {
    js!{ alert("Hello!"); }
}

它可以工作,但是我必须添加命名空间Module.exports.来调用它:

React.createElement("p",{onClick: e => Module.exports.handleClick(e) }, ... }

如何隐藏此命名空间或使其更小?

1 个答案:

答案 0 :(得分:0)

除非我先导出(#[js_export]),否则无法从JavaScript中按名称调用Rust函数。但是,stdweb library中的js!宏允许JavaScript代码调用常规的Rust函数:

fn handleClick(e: Value) {
    js!{ alert("Hello!"); }
}

要调用它:

js!{
    React.createElement("p",{onClick: @{handleClick} }, ...);
}

或者,如果您确实需要命名函数:

js!{
    const fct = @{handleClick};
    React.createElement("p",{onClick: fct}, ...);