mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-05-22 10:21:20 +00:00
This commit leverages two new attributes in the Rust compiler, `#[wasm_custom_section]` and `#[wasm_import_module]`. These two attributes allow removing a lot of hacks found in wasm-bindgen and also allows removing the requirement of `wasm-opt` to remove the unused data sections. This does require two new nightly features but we already required the `proc_macro` nightly feature and these will hopefully be stabilized before that feature!
27 lines
571 B
Rust
27 lines
571 B
Rust
#![feature(proc_macro, wasm_custom_section, wasm_import_module)]
|
|
|
|
extern crate wasm_bindgen;
|
|
|
|
use wasm_bindgen::prelude::*;
|
|
|
|
#[wasm_bindgen]
|
|
extern {
|
|
#[wasm_bindgen(js_namespace = Math)]
|
|
fn log2(a: f64) -> f64;
|
|
#[wasm_bindgen(js_namespace = Math)]
|
|
fn sin(a: f64) -> f64;
|
|
|
|
#[wasm_bindgen(js_namespace = console)]
|
|
fn log(a: &str);
|
|
}
|
|
|
|
macro_rules! println {
|
|
($($t:tt)*) => (log(&format_args!($($t)*).to_string()))
|
|
}
|
|
|
|
#[wasm_bindgen]
|
|
pub fn run() {
|
|
println!("Math.log2(10.0) = {}", log2(10.0));
|
|
println!("Math.sin(1.2) = {}", sin(1.2));
|
|
}
|