quantrs2_device/cloud/provider_optimizations/traits.rs
1//! Provider optimizer trait definitions
2
3use super::types::{
4 CostEstimate, ExecutionConfig, OptimizationRecommendation, OptimizationStrategy,
5 PerformancePrediction, WorkloadSpec,
6};
7use crate::prelude::CloudProvider;
8use crate::DeviceResult;
9
10/// Trait for provider-specific optimization strategies
11pub trait ProviderOptimizer {
12 /// Optimize a workload for this provider
13 fn optimize_workload(
14 &self,
15 workload: &WorkloadSpec,
16 ) -> DeviceResult<OptimizationRecommendation>;
17
18 /// Get the cloud provider this optimizer targets
19 fn get_provider(&self) -> CloudProvider;
20
21 /// Get available optimization strategies for this provider
22 fn get_optimization_strategies(&self) -> Vec<OptimizationStrategy>;
23
24 /// Predict performance for a given workload and configuration
25 fn predict_performance(
26 &self,
27 workload: &WorkloadSpec,
28 config: &ExecutionConfig,
29 ) -> DeviceResult<PerformancePrediction>;
30
31 /// Estimate cost for a given workload and configuration
32 fn estimate_cost(
33 &self,
34 workload: &WorkloadSpec,
35 config: &ExecutionConfig,
36 ) -> DeviceResult<CostEstimate>;
37}
38
39// Plug-in marker traits used as `Box<dyn Trait + Send + Sync>` storage in the
40// provider-optimizations type hierarchy. No methods are called through these
41// trait objects today — they serve as future extension points so that external
42// crates can register custom strategies without forking this crate. Adding
43// required methods here would break every existing impl; prefer default-bodied
44// methods if functionality ever needs to be surfaced through the trait.
45
46/// Marker trait for feature-extraction plug-ins.
47pub trait FeatureExtractor: Send + Sync {}
48
49/// Marker trait for clustering-engine plug-ins.
50pub trait ClusteringEngine: Send + Sync {}
51
52/// Marker trait for similarity-metric plug-ins.
53pub trait SimilarityMetric: Send + Sync {}
54
55/// Marker trait for nearest-neighbor-engine plug-ins.
56pub trait NearestNeighborEngine: Send + Sync {}
57
58/// Marker trait for pattern-analysis-algorithm plug-ins.
59pub trait PatternAnalysisAlgorithm: Send + Sync {}
60
61/// Marker trait for recommendation-algorithm plug-ins.
62pub trait RecommendationAlgorithm: Send + Sync {}
63
64/// Marker trait for learning-algorithm plug-ins.
65pub trait LearningAlgorithm: Send + Sync {}
66
67/// Marker trait for update-strategy plug-ins.
68pub trait UpdateStrategy: Send + Sync {}
69
70/// Marker trait for feedback-validator plug-ins.
71pub trait FeedbackValidator: Send + Sync {}
72
73/// Marker trait for feedback-analyzer plug-ins.
74pub trait FeedbackAnalyzer: Send + Sync {}
75
76/// Marker trait for feedback-aggregator plug-ins.
77pub trait FeedbackAggregator: Send + Sync {}