Module trait is the foundation for all modules in the iii framework. Every module must implement this trait to integrate with the engine’s lifecycle management, function registration, and background task execution.
Location
src/modules/module.rs
Trait Definition
Required Methods
name
&'static str
The module’s name identifier
create
Arc<Engine>
required
Reference to the iii engine instance
Option<Value>
Optional JSON configuration for the module
anyhow::Result<Box<dyn Module>>
Returns a boxed module instance or an error
initialize
anyhow::Result<()>
Returns Ok(()) on success or an error
Optional Methods
make_module
create.
Arc<Engine>
required
Reference to the iii engine instance
Option<Value>
Optional JSON configuration for the module
ModuleFuture
A pinned future that resolves to a module instance
start_background_tasks
tokio::sync::watch::Receiver<bool>
required
Shutdown signal receiver to gracefully stop background tasks
anyhow::Result<()>
Returns Ok(()) on success or an error
destroy
anyhow::Result<()>
Returns Ok(()) on success or an error
register_functions
#[service] macro.
Arc<Engine>
required
Reference to the iii engine instance for function registration
Implementation Example
Related Types
ModuleFuture
See Also
- QueueAdapter - Trait for queue adapters
- StreamAdapter - Trait for stream adapters
- Custom Modules - Guide to building custom modules