neon 0.1.0

A safe abstraction layer for Node.js.
docs.rs failed to build neon-0.1.0
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: neon-1.0.0

Neon

A safe Rust abstraction layer for native Node.js modules.

Neon protects all handles to the JavaScript heap, even when they're allocated on the Rust stack, ensuring that objects are always safely tracked by the garbage collector.

Example

A complete example can be found in the neon-demo repository. The demo makes use of the rust-bindings npm package, which makes building a Neon module as simple as adding a single line to package.json.

A simple Neon function

A Neon function takes a Call object and produces either a handle to a value or the Throw constant (meaning a JS exception was thrown). The Call object provides access to a memory management scope, which safely manages the rooting of handles to heap objects:

fn make_an_array(call: Call) -> JS<Array> {
    let scope = call.scope; // the current scope for rooting handles
    let array: Handle<Array> = Array::new(scope, 3);
    try!(array.set(0, Integer::new(scope, 9000)));
    try!(array.set(1, Object::new(scope)));
    try!(array.set(2, Number::new(scope, 3.14159)));
    Ok(array)
}

License

MIT