Trait JSClass

Source
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§

Source

const CLASS_NAME: &'static str

Required Methods§

Provided Methods§

Source

fn new_instance( js_env: &JsEnv, js_args: Vec<*mut napi_value__>, ) -> Result<*mut napi_value__, NjError>

new instance

Source

fn unwrap_mut( js_env: &JsEnv, instance: *mut napi_value__, ) -> Result<&'static mut Self, NjError>

given instance, return my object

Source

fn unwrap( js_env: &JsEnv, instance: *mut napi_value__, ) -> Result<&'static Self, NjError>

Source

fn properties() -> PropertiesBuilder

Source

fn js_init(js_exports: &mut JsExports) -> Result<(), NjError>

define class and properties under exports

Source

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(…)

Source

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.

Implementors§