Embedding Node.js in Rust.
let channel = nodejs::channel()
to get the global Node.js channel.channel.send
to run tasks in the Node.js event queue.nodejs::neon
for interoperability between Node.js and Rust. Neon documentationrust
let (tx, rx) = std::sync::mpsc::sync_channel::<String>(0);
let channel = nodejs::channel();
channel.send(move |mut cx| {
use nodejs::neon::{context::Context, reflect::eval, types::JsString};
let script = cx.string("require('http').STATUS_CODES[418]");
let whoami = eval(&mut cx, script)?;
let whoami = whoami.downcast_or_throw::<JsString, _>(&mut cx)?;
tx.send(whoami.value(&mut cx)).unwrap();
Ok(())
});
let whoami = rx.recv().unwrap();
assert_eq!(whoami, "I'm a Teapot");