Skip to content
This repository has been archived by the owner on Mar 29, 2024. It is now read-only.
/ node-rust-bridge Public archive

Simple node and rust script to achieve an easy to use bridge between rust and node.js

License

Notifications You must be signed in to change notification settings

PureSci/node-rust-bridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-Rust Bridge

Simple rust and node.js script to achieve a bridge between them. Only 1 bridge can be initialized per rust program. But node.js can have many bridges.

Installation

Add the following line to your Cargo.toml under [dependencies]

node_bridge = "1.0.2"

Node.js installation:

$ npm install rustlang-bridge

Usage/Examples

use node_bridge::NodeBridge;

#[tokio::main]
async fn main() {
    let bridge = NodeBridge::new();
    bridge.register("addition", add, None);
    bridge.register_async("find_longer", find_longer, Some("Variable to pass to the function"));
    assert_eq!(bridge.receive("channel_a").await.unwrap(), "Sent this from node!");
    bridge.send("channel_foo", "bar").ok();
    bridge.wait_until_closes().await;
}
 
fn add(params: Vec<i32>, _: Option<()>) -> i32 {
    params[0] + params[1]
}
 
async fn find_longer(params: Vec<String>, pass_data: Option<&str>) -> String {
    assert_eq!(pass_data, Some("Variable to pass to the function"));
    if params[0].len() > params[1].len() {
        return params[0].to_string();
    }
    params[1].to_string()
}

Handling in node.js:

import RustBridge from "rustlang-bridge";
 
const bridge = new RustBridge("/path/to/rust_executable");
await new Promise(resolve => setTimeout(resolve, 500)); // wait for the functions to initialize
console.log(await bridge.addition(10, 20)); // "30"
console.log(await bridge.find_longer("foo", "longer_foo")); // "longer_foo"
bridge.on("channel_foo", data => {
    console.log(data); // "bar"
});
bridge.send("channel_a", "Sent this from node!");

Contributing

Contributions are always welcome!

About

Simple node and rust script to achieve an easy to use bridge between rust and node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published