sys only.Expand description
Raw bindings to Node-API
Node-API is Node.js’s API for building native addons. Neon is predominantly a safe wrapper for Node-API and most users should prefer the the high level abstractions outside of the sys module.
However, directly using Node-API can be a useful tool for accessing low level functionality not exposed by Neon or experimenting with extensions to Neon without needing to fork the project.
§Initialization
Before any Node-API functions may be used, setup must be called at
least once.
unsafe { neon::sys::setup(env); }Note: It is unnecessary to call setup if
#[neon::main] is used to initialize the addon.
§Safety
The following are guidelines for ensuring safe usage of Node-API in Neon but, do not represent a comprehensive set of safety rules. If possible, users should avoid calling Neon methods or holding references to structures created by Neon when calling Node-API functions directly.
§Env
Neon ensures safety by carefully restricting access to Env
by wrapping it in a Context. Usages of Env
should follow Neon’s borrowing rules of Context.
It is unsound to use an Env if Rust’s borrowing rules would prevent usage
of the in scope Context.
§Values
Neon value types encapsulate references to
JavaScript values with a known type. It is unsound to
construct a Neon value with a Value of the incorrect type.
§Example
use neon::{context::Cx, prelude::*, sys::bindings};
let cx = unsafe {
neon::sys::setup(env);
Cx::from_raw(env)
};
let raw_string: bindings::Value = cx.string("Hello, World!").to_raw();
let js_string = unsafe { JsString::from_raw(&cx, raw_string) };Modules§
- FFI bindings to Node-API symbols
Functions§
- Loads Node-API symbols from the host process.