mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-24 18:43:33 +03:00
Facilitating high-level interactions between Wasm modules and JavaScript
9729efe50e
I discussed this with @fitzgen awhile back and this sort of casting seems especially problematic when you have code along the lines of: let mut x: HtmlElement = ...; { let y: &mut JsValue = x.as_ref(); *y = 3.into(); } x.some_html_element_method(); as that will immediately throw! We didn't have a use case for mutable casting other than consistency, so this commit removes it for now. We can possibly add it back in later if motivated, but for now it seems reasonable to try to avoid these sorts of pitfalls! |
||
---|---|---|
.cargo | ||
crates | ||
examples | ||
guide | ||
releases | ||
src | ||
tests | ||
.appveyor.yml | ||
.eslintignore | ||
.eslintrc | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
package-lock.json | ||
package.json | ||
README.md | ||
yarn.lock |
wasm-bindgen
Facilitating high-level interactions between wasm modules and JavaScript.
Import JavaScript things into Rust and export Rust things to JavaScript.
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
// Import the `window.alert` function from the Web.
#[wasm_bindgen]
extern {
fn alert(s: &str);
}
// Export a `greet` function from Rust to JavaScript, that alerts a
// hello message.
#[wasm_bindgen]
pub fn greet(name: &str) {
alert(&format!("Hello, {}!", name));
}
Use exported Rust things from JavaScript with ECMAScript modules!
import { greet } from "./hello_world";
greet("World!");
Guide
📚 Read the wasm-bindgen
guide here! 📚
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
See the "Contributing" section of the guide for information on
hacking on wasm-bindgen
!
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.