Skip to main content

NativeModule

Trait NativeModule 

Source
pub trait NativeModule: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    fn methods(&self) -> Vec<MethodDescriptor>;

    // Provided methods
    fn invoke_sync(&self, method: &str, args: &[ModuleArg]) -> ModuleResult { ... }
    fn invoke_async(
        &self,
        method: &str,
        args: &[ModuleArg],
    ) -> Pin<Box<dyn Future<Output = ModuleResult> + Send + '_>> { ... }
    fn on_init(&self) { ... }
    fn on_destroy(&self) { ... }
}
Expand description

Trait that all native modules must implement.

Modules must be Send + Sync to be safely shared across threads.

Required Methods§

Source

fn name(&self) -> &str

Unique name of the module (e.g., “Storage”, “Camera”, “Haptics”).

Source

fn methods(&self) -> Vec<MethodDescriptor>

List of methods this module exposes.

Provided Methods§

Source

fn invoke_sync(&self, method: &str, args: &[ModuleArg]) -> ModuleResult

Invoke a synchronous method. Must not block for long.

Source

fn invoke_async( &self, method: &str, args: &[ModuleArg], ) -> Pin<Box<dyn Future<Output = ModuleResult> + Send + '_>>

Invoke an asynchronous method. Returns a boxed future. Default implementation returns MethodNotFound.

Source

fn on_init(&self)

Called when the module is registered. Use for initialization.

Source

fn on_destroy(&self)

Called when the module is being torn down.

Implementors§