1 个不稳定版本
0.1.0 | 2023年7月9日 |
---|
#757 in WebAssembly
8KB
derive(JsError)
允许在不需要单独API的情况下,从wasm_bindgen函数中返回错误。
动机
wasm_bindgen要求返回Result的函数必须是Result<T, JsError>
或Result<T, E> where E: Into<JsValue>
。如果您希望将任何其他错误类型返回到JavaScript,建议有一个内部函数返回普通的Result
另一种解决方案是简单地为错误类型实现Into
impl From<ErrorType> for JsValue {
fn from(error: Error) -> Self {
JsError::from(error).into()
}
}
这个crate只是简单地将这段代码封装成一个[derive(JsError)]宏,以便方便使用。
安装
使用cargo add
安装
cargo add [email protected]
或者通过修改Cargo.toml
[dependencies]
derive_jserror = "0.1"
用法
使用thiserror
的示例
use derive_jserror::JsError;
use wasm_bindgen::prelude::*;
use thiserror::Error;
#[derive(Error, JsError, Debug)]
#[error("test error type")]
struct TestError;
#[wasm_bindgen]
pub fn func_returns_result() -> Result<(), TestError> {
Err(TestError)
}
许可证
根据您的选择,许可协议为Apache License (Version 2.0)或MIT license。
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在本crate中的任何贡献,均应按上述方式双授权,不得添加任何附加条款或条件。
依赖项
~0.7–1.4MB
~28K SLoC