[−][src]Function gluon::import::add_extern_module
pub fn add_extern_module<F>(thread: &Thread, name: &str, loader: F) where
F: FnMut(&Thread) -> Result<ExternModule> + Send + Sync + 'static,
Adds an extern module to thread
, letting it be loaded with import! name
from gluon code.
extern crate gluon; #[macro_use] extern crate gluon_vm; use gluon::vm::{self, ExternModule}; use gluon::{Thread, ThreadExt}; use gluon::import::add_extern_module; fn yell(s: &str) -> String { s.to_uppercase() } fn my_module(thread: &Thread) -> vm::Result<ExternModule> { ExternModule::new( thread, record!{ message => "Hello World!", yell => primitive!(1, yell) } ) } fn main_() -> gluon::Result<()> { let thread = gluon::new_vm(); add_extern_module(&thread, "my_module", my_module); let script = r#" let module = import! "my_module" module.yell module.message "#; let (result, _) = thread.run_expr::<String>("example", script)?; assert_eq!(result, "HELLO WORLD!"); Ok(()) } fn main() { if let Err(err) = main_() { panic!("{}", err) } }