pub use ::wasm_bindgen::prelude::wasm_bindgen as wb;
pub mod js_api {
// Попытки внесения всевозможных trait в scope (никак не помогло)
pub use ::wasm_bindgen;
pub use ::wasm_bindgen::*;
pub use ::wasm_bindgen::prelude;
pub use ::wasm_bindgen::prelude::*;
/* не работает
#[crate::wb]
extern {
#[crate::wb(js_namespace = console, js_name = log)]
pub fn wb_log(s: &str);
}
*/
// Почему-то так работает
#[::wasm_bindgen::prelude::wasm_bindgen]
extern {
#[::wasm_bindgen::prelude::wasm_bindgen(js_namespace = console, js_name = log)]
pub fn wb_log(s: &str);
}
pub struct Console {}
impl Console {
pub fn log(&self, s: &str) {
wb_log(s);
}
}
}
#[wb(start)]
pub fn js_main() {
let someOutput: &str = "abc";
let console = js_api::Console{};
console.log(someOutput);
}
Компилировать нужно c флагом
--target wasm32-unknown-unknown
И в Cargo.toml прописать
wasm-bindgen = "0.2"
и
[lib]
crate-type = ["cdylib"]