embed!() { /* proc-macro */ }
Available on crate feature
macro
only.Expand description
A macro for embedding JavaScript code into a binary.
Compiles a JavaScript module to bytecode and then compiles the resulting bytecode into the binary. Each file loaded is turned into its own module. The macro takes a list of paths to files to be compiled into a module with an option name. Module paths are relative to the crate manifest file.
§Usage
use rquickjs::{embed, loader::Bundle, CatchResultExt, Context, Runtime};
/// load the `my_module.js` file and name it myModule
static BUNDLE: Bundle = embed! {
"myModule": "my_module.js",
};
fn main() {
let rt = Runtime::new().unwrap();
let ctx = Context::full(&rt).unwrap();
rt.set_loader(BUNDLE, BUNDLE);
ctx.with(|ctx| {
let _ = ctx
.clone()
.compile(
"testModule",
r#"
import { foo } from 'myModule';
if(foo() !== 2){
throw new Error("Function didn't return the correct value");
}
"#,
)
.catch(&ctx)
.unwrap();
})
}