Result<T, E>
T 參數 | &T 參數 | &mut T 參數 | T 回傳值 | Option<T> 參數 | Option<T> 回傳值 | JavaScript 表示法 |
---|---|---|---|---|---|---|
否 | 否 | 否 | 是 | 否 | 否 | 與 T 相同,或例外 |
Result
型別可以從匯出至 JS 的函式以及 Rust 中的 closures 回傳。Ok
型別必須能夠轉換為 JS,而 Err
型別必須實作 Into<JsValue>
。每當遇到 Ok(val)
時,它會被轉換為 JS 並移交出去,而每當遇到 Err(error)
時,會在 JS 中拋出一個帶有 error
的例外。
您可以使用 Result
來啟用使用 Rust 中的 ?
處理 JS 例外,自然地將其向上傳播到 Wasm 邊界。此外,您還可以返回 Rust 中的自訂型別,只要它們都可以轉換為 JsValue
即可。
請注意,如果您導入具有 Result
的 JS 函式,您需要在導入上註解 #[wasm_bindgen(catch)]
(與導出的函式不同,後者不需要額外的註解)。未來可能不需要這樣做,它可能會「照原樣」工作!