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§
fn descriptor(&self) -> PluginDescriptor
fn install(&self, context: &mut PluginContext<'_>) -> Result<(), PluginError>
Provided Methods§
Sourcefn configure_descriptor(
&self,
_descriptor: &mut PluginDescriptor,
_configuration: Option<&Value>,
) -> Result<(), PluginError>
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.
Sourcefn finalize(
&self,
_context: &mut PluginFinalizeContext<'_>,
) -> Result<(), PluginError>
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".