pub trait JSClass: Sized {
const CLASS_NAME: &'static str;
// Required methods
fn create_from_js(
js_env: &JsEnv,
cb: *mut napi_callback_info__,
) -> Result<(Self, JsCallback), NjError>;
fn set_constructor(constructor: *mut napi_ref__);
fn get_constructor() -> *mut napi_ref__;
// Provided methods
fn new_instance(
js_env: &JsEnv,
js_args: Vec<*mut napi_value__>,
) -> Result<*mut napi_value__, NjError> { ... }
fn unwrap_mut(
js_env: &JsEnv,
instance: *mut napi_value__,
) -> Result<&'static mut Self, NjError> { ... }
fn unwrap(
js_env: &JsEnv,
instance: *mut napi_value__,
) -> Result<&'static Self, NjError> { ... }
fn properties() -> PropertiesBuilder { ... }
fn js_init(js_exports: &mut JsExports) -> Result<(), NjError> { ... }
extern "C" fn js_new(
env: *mut napi_env__,
info: *mut napi_callback_info__,
) -> *mut napi_value__ { ... }
extern "C" fn js_finalize(
_env: *mut napi_env__,
finalize_data: *mut c_void,
_finalize_hint: *mut c_void,
) { ... }
}
Required Associated Constants§
const CLASS_NAME: &'static str
Required Methods§
fn create_from_js( js_env: &JsEnv, cb: *mut napi_callback_info__, ) -> Result<(Self, JsCallback), NjError>
fn set_constructor(constructor: *mut napi_ref__)
fn get_constructor() -> *mut napi_ref__
Provided Methods§
Sourcefn new_instance(
js_env: &JsEnv,
js_args: Vec<*mut napi_value__>,
) -> Result<*mut napi_value__, NjError>
fn new_instance( js_env: &JsEnv, js_args: Vec<*mut napi_value__>, ) -> Result<*mut napi_value__, NjError>
new instance
Sourcefn unwrap_mut(
js_env: &JsEnv,
instance: *mut napi_value__,
) -> Result<&'static mut Self, NjError>
fn unwrap_mut( js_env: &JsEnv, instance: *mut napi_value__, ) -> Result<&'static mut Self, NjError>
given instance, return my object
fn unwrap( js_env: &JsEnv, instance: *mut napi_value__, ) -> Result<&'static Self, NjError>
fn properties() -> PropertiesBuilder
Sourcefn js_init(js_exports: &mut JsExports) -> Result<(), NjError>
fn js_init(js_exports: &mut JsExports) -> Result<(), NjError>
define class and properties under exports
Sourceextern "C" fn js_new(
env: *mut napi_env__,
info: *mut napi_callback_info__,
) -> *mut napi_value__
extern "C" fn js_new( env: *mut napi_env__, info: *mut napi_callback_info__, ) -> *mut napi_value__
call when Javascript class constructor is called For example: new Car(…)
extern "C" fn js_finalize( _env: *mut napi_env__, finalize_data: *mut c_void, _finalize_hint: *mut c_void, )
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.