Skip to main content

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 {}