rust-nodejs

Test Clippy Check

Embedding Node.js in Rust.

Guide

  1. Copy the .cargo folder in this repo to your cargo project to enable flags required to link Node.js properly.
  2. let channel = nodejs::channel() to get the global Node.js channel.
  3. Call channel.send to run tasks in the Node.js event queue.
  4. Inside the task, use nodejs::neon for interoperability between Node.js and Rust. Neon documentation

Example

rust fn main() { 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"); }