main

When attached to the main function this attribute will adjust it to properly throw errors if they can be.

#[wasm_bindgen(main)]
fn main() -> Result<(), JsValue> {
    Err(JsValue::from("this error message will be thrown"))
}

The attribute also allows using async fn main() in Cargo binaries.

#[wasm_bindgen(main)]
async fn main() {
    // ...
    future.await;
}

This attribute is only intended to be used on the main function of binaries or examples. Unlike #[wasm_bindgen(start)], it will not cause an arbitrary function to be executed on start in a library.

The return type support is modeled after Termination. () and Infallible are supported, but Termination itself is not. In order, wasm-bindgen will first detect a Result<(), impl Into<JsValue>> and will throw proper JsValues, Result<(), impl Debug> will convert an error to a string and throw that.