Function embed_js_build::postprocess_crate
[−]
[src]
pub fn postprocess_crate(lib_name: &str, debug: bool) -> Result<PostProcessData>
Call this once after a wasm-unknown-unknown build has completed (i.e. from a post-build script) in order to generate the javascript imports that should accompany the wasm binary.
See the embed_js
repository for example projects using this function.
Parameters:
lib_name
The binary name to process, typically the name of the crate unless set otherwise inCargo.toml
.debug
Whether to look for the debug or release binary to process. Until wasm32-unkown-unknown supports debug builds, this should always be set tofalse
.
Example post-build script, taken from the "simple" example in the embed_js
repository:
⚠Be careful when using this code, it's not being tested!
extern crate base64; extern crate embed_js_build; use std::fs::File; use std::io::Write; fn main() { let pp_data = embed_js_build::postprocess_crate("simple", false).unwrap(); let in_base_64 = base64::encode(&pp_data.wasm); let html_path = pp_data.wasm_path.with_extension("html"); let mut html_file = File::create(&html_path).unwrap(); write!(html_file, r#"<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title> wasm test </title> <script> function _base64ToArrayBuffer(base64) {{ var binary_string = window.atob(base64); var len = binary_string.length; var bytes = new Uint8Array( len ); for (var i = 0; i < len; ++i) {{ bytes[i] = binary_string.charCodeAt(i); }} return bytes.buffer; }} var bytes = _base64ToArrayBuffer( "{}" ); WebAssembly.instantiate(bytes, {{ env: {{ {} }}}}).then(results => {{ window.exports = results.instance.exports; console.log(results.instance.exports.add_two(2)); }}); </script> </head> </html> "#, in_base_64, pp_data.imports ).unwrap(); }