pub trait ConfigValidation:
Clone
+ Debug
+ Send
+ Sync
+ 'static {
// Required methods
fn validate(&self) -> ConfigValidationResult;
fn schema_version(&self) -> String;
fn migrate_from_version(
&self,
from_version: &str,
data: &str,
) -> Result<Self, PipelineError>;
}Expand description
Generic trait for configuration validation with detailed error reporting
This trait defines the interface for configuration validation, enabling type-safe validation of configuration data with comprehensive error reporting and schema versioning support.
§Key Features
- Validation Logic: Implement custom validation rules for configuration
- Error Reporting: Detailed error messages with field-level information
- Schema Versioning: Track and manage configuration schema versions
- Migration Support: Automatic migration between configuration versions
§Implementation Requirements
Implementing types must:
- Be cloneable for configuration updates
- Be debuggable for error reporting
- Be thread-safe (
Send + Sync) - Have a stable lifetime (
'static)
§Examples
Required Methods§
Sourcefn validate(&self) -> ConfigValidationResult
fn validate(&self) -> ConfigValidationResult
Validates the configuration and returns detailed validation results
Sourcefn schema_version(&self) -> String
fn schema_version(&self) -> String
Returns the configuration schema version for compatibility checking
Sourcefn migrate_from_version(
&self,
from_version: &str,
data: &str,
) -> Result<Self, PipelineError>
fn migrate_from_version( &self, from_version: &str, data: &str, ) -> Result<Self, PipelineError>
Migrates configuration from an older schema version
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.