5 releases
Uses old Rust 2015
0.1.4 | Sep 2, 2018 |
---|---|
0.1.3 | Aug 22, 2018 |
0.1.2 | Aug 22, 2018 |
0.1.1 | Aug 22, 2018 |
0.1.0 | Aug 22, 2018 |
#17 in #webasm
36 downloads per month
21KB
346 lines
node-rs
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 thenode_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 becomescluster::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
.
Dependencies
~3MB
~69K SLoC