Skip to main content

Plugin

Trait Plugin 

Source
pub trait Plugin:
    Send
    + Sync
    + 'static {
    // Required methods
    fn descriptor(&self) -> PluginDescriptor;
    fn install(
        &self,
        context: &mut PluginContext<'_>,
    ) -> Result<(), PluginError>;

    // Provided methods
    fn configure_descriptor(
        &self,
        _descriptor: &mut PluginDescriptor,
        _configuration: Option<&Value>,
    ) -> Result<(), PluginError> { ... }
    fn finalize(
        &self,
        _context: &mut PluginFinalizeContext<'_>,
    ) -> Result<(), PluginError> { ... }
}
Expand description

Statically linked Minco extension.

install must be deterministic and side-effect free with respect to remote systems. Connections, migrations, background work, and other runtime effects belong in explicitly registered services and lifecycle components, not in plugin discovery.

Required Methods§

Source

fn descriptor(&self) -> PluginDescriptor

Source

fn install(&self, context: &mut PluginContext<'_>) -> Result<(), PluginError>

Provided Methods§

Source

fn configure_descriptor( &self, _descriptor: &mut PluginDescriptor, _configuration: Option<&Value>, ) -> Result<(), PluginError>

Adjusts graph metadata from the plugin’s validated runtime configuration.

This hook is intentionally limited to the descriptor: it must be deterministic, side-effect free, and must not construct clients or connect to infrastructure. It allows configuration-dependent capabilities, dependencies, resources, operations, migrations, and health checks to participate in graph validation before installation. Plugin identity, version, default selection, and configuration schema are immutable.

Source

fn finalize( &self, _context: &mut PluginFinalizeContext<'_>, ) -> Result<(), PluginError>

Completes composition after every enabled plugin has installed its services and contributions.

Finalization is the narrow startup hook for registries that aggregate independent contributions, such as health checks. It must remain deterministic and must not perform migrations, network calls, or background work.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§