Expand description
Native Module System
Provides a registry for native modules that can be called from JavaScript through the bridge layer. Modules register methods that can be invoked either synchronously or asynchronously.
Design:
- Modules implement the
NativeModuletrait - The
ModuleRegistryholds all registered modules - Methods are invoked by name through the bridge
- Thread safety: registry is
Send + Sync, modules must beSend + Sync
Example:
ⓘ
struct StorageModule;
impl NativeModule for StorageModule {
fn name(&self) -> &str { "Storage" }
fn methods(&self) -> Vec<MethodDescriptor> {
vec![
MethodDescriptor::sync("getItem", "Get a stored value"),
MethodDescriptor::async_method("setItem", "Store a value"),
]
}
fn invoke_sync(&self, method: &str, args: &[ModuleArg]) -> ModuleResult { ... }
}Structs§
- Method
Descriptor - Describes a method exposed by a native module.
- Module
Registry - Thread-safe registry of native modules.
Enums§
- Module
Arg - Arguments passed to module method invocations.
- Module
Error - Errors from module operations.
- Module
Value - Result from a module method invocation.
Traits§
- Native
Module - Trait that all native modules must implement.
Type Aliases§
- Module
Result - Result type for module method calls.