PluginFactory

Trait PluginFactory 

Source
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§

Source

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.

Source

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.

Source

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§

Source

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.

Source

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.

Implementors§