40 lines
1.3 KiB
Rust
Raw Normal View History

#![feature(proc_macro, wasm_custom_section, wasm_import_module)]
2018-03-21 08:26:00 -07:00
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
// Definitions of the functionality available in JS, which wasm-bindgen will
// generate shims for today (and eventually these should be near-0 cost!)
//
// These definitions need to be hand-written today but the current vision is
// that we'll use WebIDL to generate this `extern` block into a crate which you
// can link and import. There's a tracking issue for this at
2018-07-06 23:09:48 +07:00
// https://github.com/rustwasm/wasm-bindgen/issues/42
2018-03-21 08:26:00 -07:00
//
// In the meantime these are written out by hand and correspond to the names and
// signatures documented on MDN, for example
#[wasm_bindgen]
2018-06-27 22:42:34 -07:00
extern "C" {
2018-03-21 08:26:00 -07:00
type HTMLDocument;
static document: HTMLDocument;
#[wasm_bindgen(method)]
fn createElement(this: &HTMLDocument, tagName: &str) -> Element;
#[wasm_bindgen(method, getter)]
fn body(this: &HTMLDocument) -> Element;
type Element;
#[wasm_bindgen(method, setter = innerHTML)]
fn set_inner_html(this: &Element, html: &str);
#[wasm_bindgen(method, js_name = appendChild)]
fn append_child(this: &Element, other: Element);
2018-03-21 08:26:00 -07:00
}
// Called by our JS entry point to run the example
#[wasm_bindgen]
pub fn run() {
let val = document.createElement("p");
val.set_inner_html("Hello from Rust!");
document.body().append_child(val);
2018-03-21 08:26:00 -07:00
}