如何将#[wasm_bindgen] 与类型别名一起使用?

问题描述

我想做什么:

#[wasm_bindgen]
pub type ParseError = parserange::Error;

但 Rust 编译器抱怨:

error: #[wasm_bindgen] can only be applied to a function,struct,enum,impl,or extern block
  --> src/lib.rs:89:1
   |
89 | pub type ParseError = parserange::Error;

我不想在 parserange.rs添加 #[wasm-bindgen] 属性,因为它位于一个不使用 wasm 构建的单独库中。

解决办法吗?

解决方法

解决方法是将 parserange::Error 包装在元组结构中以创建新类型。这样做的缺点是,您想使用的 parserange::Error 上定义的所有函数都必须重新定义才能调用错误子对象的函数。这具有创建新类型的所有优点,例如通过 wasm_bindgen 导出,或在另一个 crate 中定义的类型上实现特征。可以在here

找到更多信息

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...