node-rs 0.1.4

Rust bindings for node.js using stdweb
docs.rs failed to build node-rs-0.1.4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: node-rs-0.1.3

node-rs

Documentation

This crate exposes a stdweb-friendly interface to the node.js API. This is very much a work-in-progress.

API Design

There are some guiding principles we're following in the design of the API.

First, when translating names, Rust will use Rust-centric casing for types and functions. That means types will be PascalType, which in general matches the style for types in JavaScript. Function names will be snake_case, which is different from typical JavaScript naming convention.

For example, setTimeout becomes set_timeout.

Second, namespacing will follow these typical patterns:

  • global names will fall directly under the node_rs crate top-level module name
  • "module" names will fall under a Rust module of the same name. e.g. require('cluster').fork() in JavaScript becomes cluster::fork() in Rust

Third, built-in modules will not need to be "imported" like they are in JavaScript. node-rs will assume that built-in modules can be imported, and so all module routines can just be called directly without first importing the module. In order to support runtime feature detection (e.g. for modules introduced in newer node.js releases), each module will have an initialize() function that can be used to check to see if the module is available.

For example:

use node_rs::cluster;

if let Some(_) = cluster::initialize() {
    // 'cluster' module is available
    cluster::fork();
}

Finally, all global values will be accessible via function calls. For example, global.process is available as node_rs::process.