pub trait PluginFactory: Send + Sync {
// Required methods
fn create_plugin(&self, config: &PluginConfig) -> Result<Box<dyn Plugin>>;
fn metadata(&self) -> PluginMetadata;
fn validate_config(&self, config: &PluginConfig) -> Result<()>;
// Provided methods
fn default_config(&self) -> PluginConfig { ... }
fn config_schema(&self) -> HashMap<String, String> { ... }
}Expand description
Factory for creating plugin instances
The PluginFactory trait provides a standardized interface for creating plugin instances with specific configurations. This enables dynamic plugin creation and configuration management.
§Examples
use sklears_core::plugin::{PluginFactory, Plugin, PluginConfig, PluginMetadata};
use sklears_core::error::Result;
struct LinearRegressionFactory;
impl PluginFactory for LinearRegressionFactory {
fn create_plugin(&self, config: &PluginConfig) -> Result<Box<dyn Plugin>> {
// Create and configure the plugin based on the provided config
// Box::new(LinearRegressionPlugin::new(config))
todo!("Implement plugin creation")
}
fn metadata(&self) -> PluginMetadata {
PluginMetadata {
name: "LinearRegression".to_string(),
version: "1.0.0".to_string(),
description: "Linear regression algorithm".to_string(),
..Default::default()
}
}
fn validate_config(&self, config: &PluginConfig) -> Result<()> {
// Validate configuration parameters
Ok(())
}
}Required Methods§
Sourcefn create_plugin(&self, config: &PluginConfig) -> Result<Box<dyn Plugin>>
fn create_plugin(&self, config: &PluginConfig) -> Result<Box<dyn Plugin>>
Create a new plugin instance
This method creates a new plugin instance configured according to the provided configuration. The factory should validate the configuration and return an error if the plugin cannot be created with the given settings.
§Arguments
config- The configuration for the plugin instance
§Returns
A boxed plugin instance, or an error if creation fails.
Sourcefn metadata(&self) -> PluginMetadata
fn metadata(&self) -> PluginMetadata
Get plugin metadata
Returns metadata describing the plugins that this factory can create. This includes information about capabilities, supported types, and configuration requirements.
§Returns
Metadata for plugins created by this factory.
Sourcefn validate_config(&self, config: &PluginConfig) -> Result<()>
fn validate_config(&self, config: &PluginConfig) -> Result<()>
Validate configuration
Validates that the provided configuration is suitable for creating a plugin instance. This should check parameter types, ranges, and any dependencies or requirements.
§Arguments
config- The configuration to validate
§Returns
Ok(()) if the configuration is valid, or an error describing what is invalid.
Provided Methods§
Sourcefn default_config(&self) -> PluginConfig
fn default_config(&self) -> PluginConfig
Get default configuration
Returns a default configuration that can be used to create a plugin instance with sensible defaults. This provides a starting point for configuration customization.
§Returns
A default plugin configuration.
Sourcefn config_schema(&self) -> HashMap<String, String>
fn config_schema(&self) -> HashMap<String, String>
Get configuration schema
Returns information about the configuration parameters that this factory accepts, including their types, ranges, and descriptions. This can be used for automatic UI generation or documentation.
§Returns
A map of parameter names to their descriptions and constraints.