Skip to main content

quantrs2_circuit/
lib.rs

1// Allow specific lints that are intentional design decisions or would require breaking changes
2#![allow(clippy::too_many_arguments)] // Quantum operations naturally have many parameters
3#![allow(clippy::module_inception)] // Module organization matches quantum circuit hierarchy
4#![allow(clippy::large_enum_variant)] // Quantum state representations require large variants
5#![allow(unexpected_cfgs)]
6// Allow cfg feature gates for future SciRS2 features
7// Architectural decisions - these are intentional design patterns
8#![allow(clippy::unnecessary_wraps)] // Result return types for API consistency
9#![allow(clippy::unused_self)] // Trait implementations require &self
10#![allow(clippy::unused_async)]
11// Async placeholders for future implementation
12// Performance-related (not safety issues, can be optimized later)
13#![allow(clippy::significant_drop_tightening)] // Lock scope optimization TODO
14// Style-related (low priority)
15#![allow(clippy::match_same_arms)] // Sometimes intentional for clarity
16#![allow(clippy::option_if_let_else)] // Style preference
17#![allow(clippy::return_self_not_must_use)] // Builder pattern
18#![allow(clippy::needless_range_loop)] // Sometimes clearer with index
19// Additional suppressions for remaining warnings
20#![allow(clippy::branches_sharing_code)] // Sometimes intentional
21#![allow(clippy::type_complexity)] // Quantum types are complex
22#![allow(clippy::missing_const_for_fn)] // Not always beneficial
23#![allow(clippy::format_push_string)] // Performance optimization TODO
24#![allow(clippy::cast_possible_truncation)] // Platform-specific, validated
25#![allow(clippy::future_not_send)] // Async architecture decision
26#![allow(clippy::needless_pass_by_ref_mut)] // API consistency
27#![allow(clippy::cast_precision_loss)] // Acceptable for quantum simulation
28#![allow(clippy::uninlined_format_args)] // Style preference
29#![allow(clippy::assigning_clones)] // Sometimes clearer
30#![allow(clippy::zero_sized_map_values)] // Intentional for set-like maps
31#![allow(clippy::used_underscore_binding)] // Sometimes needed for unused captures
32#![allow(clippy::collection_is_never_read)] // Builder pattern / lazy evaluation
33#![allow(clippy::wildcard_in_or_patterns)] // Sometimes intentional
34#![allow(clippy::ptr_arg)] // API consistency with slices
35#![allow(clippy::implicit_hasher)] // Generic hasher not always needed
36#![allow(clippy::ref_option)] // Sometimes needed for lifetime reasons
37#![allow(clippy::expect_fun_call)] // Clearer error messages
38#![allow(clippy::if_not_else)] // Sometimes clearer
39#![allow(clippy::iter_on_single_items)] // Sometimes intentional
40#![allow(clippy::trivially_copy_pass_by_ref)] // API consistency
41#![allow(clippy::empty_line_after_doc_comments)] // Formatting preference
42#![allow(clippy::manual_let_else)] // Style preference
43#![allow(clippy::await_holding_lock)] // Async architecture
44// Full clippy category suppressions
45#![allow(clippy::pedantic)]
46#![allow(clippy::nursery)]
47#![allow(clippy::cargo)]
48// Additional specific suppressions
49#![allow(clippy::large_enum_variant)]
50#![allow(clippy::borrowed_box)]
51#![allow(clippy::manual_map)]
52#![allow(clippy::non_send_fields_in_send_ty)]
53#![allow(clippy::if_same_then_else)]
54#![allow(clippy::manual_clamp)]
55#![allow(clippy::double_must_use)]
56#![allow(clippy::only_used_in_recursion)]
57#![allow(clippy::same_item_push)]
58#![allow(clippy::format_in_format_args)]
59#![allow(clippy::implied_bounds_in_impls)]
60#![allow(clippy::explicit_counter_loop)]
61#![allow(clippy::duplicated_attributes)]
62#![allow(clippy::new_ret_no_self)]
63#![allow(clippy::must_use_unit)]
64#![allow(clippy::redundant_pattern_matching)]
65#![allow(clippy::redundant_guards)]
66#![allow(clippy::wrong_self_convention)]
67#![allow(clippy::iter_next_slice)]
68#![allow(clippy::create_dir)]
69#![allow(clippy::enum_variant_names)]
70// Additional specific suppressions (correct lint names)
71#![allow(clippy::should_implement_trait)] // Methods like default(), from_str(), next()
72#![allow(clippy::upper_case_acronyms)] // VQE, QAOA, QFT, CNOT, SGD
73#![allow(clippy::unnecessary_map_or)] // map_or simplification suggestions
74#![allow(clippy::derivable_impls)] // Impl can be derived
75#![allow(clippy::or_fun_call)] // unwrap_or_else with default value
76#![allow(clippy::cloned_ref_to_slice_refs)] // clone can be replaced with from_ref
77#![allow(clippy::collapsible_match)]
78#![allow(clippy::len_without_is_empty)]
79#![allow(clippy::arc_with_non_send_sync)]
80#![allow(clippy::std_instead_of_core)] // Allow std usage
81#![allow(clippy::match_like_matches_macro)] // Sometimes match is clearer
82#![allow(clippy::suspicious_open_options)] // File open options
83#![allow(clippy::new_without_default)] // new() without Default impl
84
85//! # QuantRS2-Circuit
86//!
87//! Quantum circuit representation and DSL for the `QuantRS2` framework.
88//!
89//! This crate provides a comprehensive toolkit for creating, manipulating,
90//! and analyzing quantum circuits with a fluent API and modern Rust patterns.
91//!
92//! ## Recent Updates (v0.1.3)
93//!
94//! - Enhanced code quality with clippy warning fixes
95//! - **SciRS2 v0.1.3 Stable Release Integration** with unified patterns
96//! - Enhanced graph-based circuit optimization algorithms (60+ strategies)
97//! - Improved hardware-aware compilation with `SciRS2` graph algorithms
98//! - Comprehensive policy documentation for quantum circuit development
99//! - Added refactoring recommendations for large modules
100//!
101//! ## Features
102//!
103//! - **50,055 lines** of production Rust code
104//! - **237 test functions** providing comprehensive coverage
105//! - **16 example programs** demonstrating key features
106//! - Type-safe circuit construction with const generics
107//! - Fluent builder API for intuitive circuit creation
108//! - QASM 2.0 / 3.0 import and export
109//! - Circuit optimization passes (60+ strategies)
110//! - Hardware-aware transpilation for IBM, Google, Rigetti
111//! - SciRS2-powered performance analysis and profiling
112//! - Advanced debugging and verification tools
113//!
114//! ## Module Organization
115//!
116//! - **Core**: `builder`, `classical`, `measurement`
117//! - **Optimization**: `optimization`, `optimizer`, `graph_optimizer`
118//! - **Hardware**: `transpiler`, `routing`, `pulse`, `crosstalk`
119//! - **Analysis**: `profiler`, `debugger`, `equivalence`, `validation`
120//! - **Advanced**: `synthesis`, `zx_calculus`, `tensor_network`, `topological`
121pub mod buffer_manager;
122pub mod builder;
123pub mod circuit_cache;
124pub mod classical;
125pub mod commutation;
126pub mod crosstalk;
127pub mod dag;
128pub mod debugger;
129pub mod distributed;
130pub mod equivalence;
131pub mod fault_tolerant;
132pub mod formatter;
133pub mod gate_applier;
134pub mod graph_optimizer;
135pub mod linter;
136pub mod measurement;
137pub mod ml_optimization;
138pub mod noise_models;
139pub mod optimization;
140pub mod optimizer;
141pub mod photonic;
142pub mod profiler;
143pub mod pulse;
144pub mod qasm;
145pub mod qc_co_optimization;
146pub mod resource_estimator;
147pub mod routing;
148pub mod scirs2_benchmarking;
149pub mod scirs2_cross_compilation_enhanced;
150pub mod scirs2_integration;
151pub mod scirs2_ir_tools;
152pub mod scirs2_matrices;
153pub mod scirs2_optimization;
154pub mod scirs2_pulse_control_enhanced;
155pub mod scirs2_qasm_compiler_enhanced;
156pub mod scirs2_similarity;
157pub mod scirs2_transpiler_enhanced;
158pub mod simulator_interface;
159pub mod slicing;
160pub mod synthesis;
161pub mod tensor_network;
162pub mod topological;
163pub mod topology;
164pub mod transpiler;
165pub mod validation;
166pub mod verifier;
167pub mod vqe;
168pub mod zx_calculus;
169
170// Re-exports of commonly used types and traits
171pub mod prelude {
172    pub use crate::builder::{CircuitStats, *};
173    // Convenience re-export
174    pub use crate::circuit_cache::{
175        CacheConfig, CacheEntry, CacheManager, CacheStats, CircuitCache, CircuitSignature,
176        CompiledCircuitCache, EvictionPolicy, ExecutionResultCache, SignatureGenerator,
177        TranspilationCache,
178    };
179    pub use crate::classical::{
180        CircuitOp, ClassicalBit, ClassicalCircuit, ClassicalCircuitBuilder, ClassicalCondition,
181        ClassicalOp, ClassicalRegister, ClassicalValue, ComparisonOp, ConditionalGate, MeasureOp,
182    };
183    pub use crate::commutation::{
184        CommutationAnalyzer, CommutationOptimization, CommutationResult, CommutationRules, GateType,
185    };
186    pub use crate::crosstalk::{
187        CrosstalkAnalysis, CrosstalkAnalyzer, CrosstalkModel, CrosstalkSchedule,
188        CrosstalkScheduler, SchedulingStrategy, TimeSlice,
189    };
190    pub use crate::dag::{circuit_to_dag, CircuitDag, DagEdge, DagNode, EdgeType};
191    pub use crate::debugger::{
192        AnalysisDepth, BlochVector, BottleneckType as DebuggerBottleneckType, BreakpointAction,
193        BreakpointCondition, BreakpointManager, ConditionalBreakpoint, ConnectionType,
194        ConnectionVisualization, CorrelationType, DebugError, DebuggerConfig, Difficulty,
195        ErrorAnalysisResults, ErrorCorrelation, ErrorDetectionConfig, ErrorDetector, ErrorPattern,
196        ErrorSeverity, ErrorStatistics, ErrorType as DebuggerErrorType, ExecutionHistory,
197        ExecutionState, ExecutionStatus as DebuggerExecutionStatus, ExecutionSummary,
198        ExportFormat as DebuggerExportFormat, ExportOptions as DebuggerExportOptions,
199        ExpressionResult, ExpressionType, ExpressionValue, GateAttributes, GateExecutionMetrics,
200        GateExecutionResult, GateProperties as DebuggerGateProperties, GateSnapshot,
201        GateType as DebuggerGateType, GateVisualization, HistoryEntry, HistoryStatistics,
202        ImpactAssessment, MemorySnapshot, MemoryStatistics, MemoryUsage, MetricSnapshot,
203        OptimizationSuggestion as DebuggerOptimizationSuggestion, PatternType, PerformanceAnalysis,
204        PerformanceBottleneck, PerformanceProfiler, PerformanceSample, PredictionResult,
205        Priority as DebuggerPriority, ProfilerConfig, ProfilingStatistics, QuantumDebugger,
206        RenderingQuality, RenderingStatistics, RootCause, Solution, StateBreakpoint, StatePattern,
207        StateSnapshot, StepResult, SuggestionType as DebuggerSuggestionType, TimingInfo,
208        TimingStatistics, TrendAnalysis, TrendDirection, Visualization, VisualizationConfig,
209        VisualizationData, VisualizationEngine, VisualizationMetadata, VisualizationSnapshot,
210        VisualizationType, WatchConfig, WatchExpression, WatchManager, WatchedGate, WatchedMetric,
211        WatchedState,
212    };
213    pub use crate::distributed::{
214        BackendType, DistributedExecutor, DistributedJob, DistributedResult, ExecutionBackend,
215        ExecutionParameters, ExecutionStatus, LoadBalancingStrategy, Priority, SystemHealthStatus,
216    };
217    pub use crate::equivalence::{
218        circuits_equivalent, circuits_structurally_equal, EquivalenceChecker, EquivalenceOptions,
219        EquivalenceResult, EquivalenceType,
220    };
221    pub use crate::fault_tolerant::{
222        FaultTolerantCircuit, FaultTolerantCompiler, LogicalQubit, MagicState, QECCode,
223        ResourceOverhead, SyndromeMeasurement, SyndromeType,
224    };
225    pub use crate::formatter::{
226        AlignmentConfig, AlignmentEngine, AlignmentGroup, AlignmentItem, AlignmentOptimization,
227        AlignmentState, AlignmentStatistics, AutoCorrectionConfig, ChangeType, CodeOrganizer,
228        CodeSection, CodeStructure, CommentAlignment, CommentConfig, CommentFormatter,
229        CommentFormatterState, CommentRule, ComplianceLevel as FormatterComplianceLevel,
230        ConsistencyMetrics, FormattedCircuit, FormatterConfig, FormattingChange, FormattingResult,
231        FormattingStatistics, GroupingStrategy, IndentationConfig, IndentationStyle,
232        LayoutOptimizer, OptimizationConfig as FormatterOptimizationConfig, OrganizationConfig,
233        Position, QualityMetrics, QuantumFormatter, SciRS2AnalysisConfig,
234        SeverityLevel as FormatterSeverityLevel, SpacingConfig, SpacingStyle, StyleCompliance,
235        StyleEnforcementConfig, StyleEnforcer, StyleInformation, StyleIssue, WhitespaceManager,
236        WhitespaceOptimization, WhitespaceState, WhitespaceStatistics,
237    };
238    pub use crate::graph_optimizer::{CircuitDAG, GraphGate, GraphOptimizer, OptimizationStats};
239    pub use crate::linter::{
240        AnalysisScope, AntiPatternDetectionResult, AntiPatternDetector, AutoFix, AutoFixType,
241        BarrierUsageStyle, BestPracticeResult, BestPracticeRule, BestPracticeViolation,
242        BestPracticesChecker, BestPracticesCompliance, CircuitLocation, ComplexityAnalysisResult,
243        ComplexityAnalyzer, ComplexityClassification, ComplexityMetric,
244        ComplexityMetrics as LinterComplexityMetrics, ComplexityTrend, ComplianceLevel,
245        ConnectivityPattern, ConstraintType as LinterConstraintType, CustomGuideline,
246        Difficulty as LinterDifficulty, GateGroupingStyle, Importance,
247        IndentationStyle as LinterIndentationStyle, InteractionType, IssueType, LintIssue,
248        LinterConfig, LintingMetadata, LintingResult, LintingStatistics, MeasurementPlacementStyle,
249        NamingConvention, OptimizationAnalysisResult, OptimizationAnalyzer,
250        OptimizationImprovement as LinterOptimizationImprovement, OptimizationRule,
251        OptimizationSuggestion as LinterOptimizationSuggestion, OptimizationType,
252        ParameterConstraint, PatternAnalysisResult, PatternDetectionResult, PatternDetector,
253        PatternFlexibility, PatternInteraction, PatternMatcher, PatternPerformanceProfile,
254        PatternStatistics, PerformanceImpact, PerformanceMetrics as LinterPerformanceMetrics,
255        PerformanceProjection, PracticeGuidelines, QuantumAntiPattern, QuantumLinter,
256        QuantumPattern, QubitOrderingStyle, Risk, SafetyLevel,
257        ScalingBehavior as LinterScalingBehavior, Severity, SimplificationSuggestion,
258        SimplificationType, StyleAnalysisResult, StyleCheckResult, StyleChecker, StyleConfig,
259        StyleRule, StyleStrictness, StyleViolation, TrendDirection as LinterTrendDirection,
260    };
261    pub use crate::measurement::{
262        CircuitOp as MeasurementCircuitOp, FeedForward, Measurement, MeasurementCircuit,
263        MeasurementCircuitBuilder, MeasurementDependencies,
264    };
265    pub use crate::ml_optimization::{
266        AcquisitionFunction, FeatureExtractor, ImprovementMetrics, MLCircuitOptimizer,
267        MLCircuitRepresentation, MLOptimizationResult, MLStrategy, TrainingExample,
268    };
269    pub use crate::noise_models::{
270        DecoherenceParams, ErrorSource, LeakageError, NoiseAnalysisResult, NoiseAnalyzer,
271        ReadoutError, SingleQubitError, ThermalNoise, TwoQubitError,
272    };
273    pub use crate::optimization::{
274        AbstractCostModel, CircuitAnalyzer, CircuitOptimizer2, CircuitRewriting,
275        CoherenceOptimization, CommutationTable, CostBasedOptimization, CostModel,
276        DecompositionOptimization, DecouplingSequence, DynamicalDecoupling, GateCancellation,
277        GateCommutation, GateCost, GateError, GateMerging, GateProperties, HardwareCostModel,
278        NoiseAwareCostModel, NoiseAwareMapping, NoiseAwareOptimizer, NoiseModel, OptimizationLevel,
279        OptimizationPass, OptimizationReport, PassConfig, PassManager, RotationMerging,
280        TemplateMatching, TwoQubitOptimization,
281    };
282    pub use crate::optimizer::{
283        CircuitOptimizer, HardwareOptimizer, OptimizationPassType, OptimizationResult,
284        RedundantGateElimination, SingleQubitGateFusion,
285    };
286    pub use crate::photonic::{
287        CVCircuit, CVGate, CVMeasurement, PhotonicCircuit, PhotonicCircuitBuilder,
288        PhotonicConverter, PhotonicGate, PhotonicMeasurement, PhotonicMode, Polarization,
289        PolarizationBasis,
290    };
291    pub use crate::profiler::{
292        AccuracyMeasurement, AccuracyTracking, AggregationFunction, AggregationRule, Alert,
293        AlertChannel, AlertChannelType, AlertCondition, AlertLevel, AlertRule, AlertSystem,
294        AllocationEvent, AllocationEventType, AllocationInfo, AllocationStatistics,
295        AllocationTracker, AllocationType, AnalysisConfig, AnalysisDepth as ProfilerAnalysisDepth,
296        AnalyticsConfig, AnomalyAlgorithmType, AnomalyDetectionAlgorithm, AnomalyDetectionConfig,
297        AnomalyDetector, AnomalyType, AnomySeverity, ArchivalPolicy, BackupConfig, BaselineManager,
298        BaselineUpdatePolicy, BaselineValidationResults,
299        BenchmarkConfig as ProfilerBenchmarkConfig, BenchmarkEngine, BenchmarkResult,
300        BenchmarkSuite, BenchmarkSuiteConfig, BenchmarkTest, BenchmarkTestType,
301        BottleneckAnalysis as ProfilerBottleneckAnalysis, BottleneckImpactAnalysis,
302        BottleneckSeverity, CacheMissRates, CascadingEffect, ChecksumAlgorithm, ComparisonOperator,
303        ComparisonResults, ComparisonSummary, CompressionAlgorithm, CompressionSettings,
304        ConnectionStatistics, CostBenefitAnalysis, CpuOptimization, CpuOptimizationType,
305        CpuProfilingData, CpuState, DataRetentionPolicy, DetailedAnalysis, EnvironmentInfo,
306        ErrorAnalysis, ErrorCharacteristics, ErrorDistribution,
307        ErrorPattern as ProfilerErrorPattern, ErrorSeverity as ProfilerErrorSeverity,
308        ExportFormat as ProfilerExportFormat, GateProfile, GateProfiler, GpuInfo, GpuOptimization,
309        GpuOptimizationType, GpuProfilingData, HardwareConfig, HistoricalPerformanceData,
310        InsightType, IntegrityChecks, IoOptimization, IoOptimizationType, IoProfilingData, IoState,
311        LatencyDistribution, LeakAnalysisResults, LeakDetector, LeakSeverity, LogicalOperator,
312        MemoryLeak, MemoryOptimization as ProfilerMemoryOptimization, MemoryOptimizationType,
313        MemoryPattern, MemoryProfiler, MemorySnapshot as ProfilerMemorySnapshot, MemoryState,
314        MemoryTransferTimes, MetricCategory, MetricStream, MetricsCollector,
315        MitigationStrategy as ProfilerMitigationStrategy, MitigationStrategyType, MlModel,
316        NetworkOptimization, NetworkOptimizationType, NetworkProfilingData, NetworkState,
317        PerformanceAnalyzer, PerformanceAnomaly, PerformanceBaseline,
318        PerformanceInsight as ProfilerPerformanceInsight, PerformanceMetric, PerformanceRegression,
319        PerformanceSnapshot, PerformanceSummary, PrecisionLevel, PredictionConfig,
320        PredictionEngine, PredictionModel as ProfilerPredictionModel, PredictionModelType,
321        PredictionResult as ProfilerPredictionResult, ProfilerConfig as ProfilerConfiguration,
322        ProfilingReport, ProfilingSession, QuantumProfiler, RealtimeMetrics, RecoveryStatistics,
323        RegressionAlgorithmType, RegressionAnalysisResults, RegressionDetectionAlgorithm,
324        RegressionDetectionConfig, RegressionDetector, RegressionSeverity, ResourceBottleneck,
325        ResourceBottleneckType, ResourceProfiler,
326        ResourceRequirements as ProfilerResourceRequirements, ResourceUtilization,
327        SerializationConfig, SerializationFormat, SessionAnalytics, SessionConfig, SessionData,
328        SessionManager, SessionStatistics, SessionStatus, SessionStorage, SessionTrendAnalysis,
329        SeverityLevel, StatisticalMethod, StorageBackend, StorageConfig, StorageInfo, StorageType,
330        StreamStatistics, SuppressionCondition, SuppressionRule, SystemState, TestResult,
331        ThroughputStatistics, TimingStatistics as ProfilerTimingStatistics, TrainingStatus,
332        TrendAnalysisResults, ValidationStatus,
333    };
334    pub use crate::pulse::{
335        Channel, DeviceConfig, PulseCalibration, PulseCompiler, PulseInstruction, PulseOptimizer,
336        PulseSchedule, Waveform,
337    };
338    pub use crate::qasm::exporter::ExportError;
339    pub use crate::qasm::{
340        export_qasm3, parse_qasm3, validate_qasm3, ExportOptions, ParseError, QasmExporter,
341        QasmGate, QasmParser, QasmProgram, QasmRegister, QasmStatement, ValidationError,
342    };
343    pub use crate::qc_co_optimization::{
344        ClassicalProcessingStep, ClassicalStepType, DataFlowGraph, DataType,
345        HybridOptimizationAlgorithm, HybridOptimizationProblem, HybridOptimizationResult,
346        HybridOptimizer, LearningRateSchedule, ObjectiveFunction as HybridObjectiveFunction,
347        ObjectiveFunctionType, ParameterizedQuantumComponent, RegularizationType,
348    };
349    pub use crate::resource_estimator::{
350        AlgorithmClass, CircuitMetrics as ResourceCircuitMetrics, ComplexityAnalysis,
351        ComplexityClass, ExecutionTimeEstimate, HardwareRequirements, MemoryRequirements,
352        OptimizationSuggestion as ResourceOptimizationSuggestion, PlatformRecommendation,
353        ResourceEstimate, ScalabilityAnalysis, ScalingBehavior, ScalingFunction,
354    };
355    pub use crate::routing::{
356        CircuitRouter, CouplingMap, Distance, LookaheadConfig, LookaheadRouter, RoutedCircuit,
357        RoutingPassType, RoutingResult, RoutingStatistics, RoutingStrategy, SabreConfig,
358        SabreRouter, SwapLayer, SwapNetwork,
359    };
360    pub use crate::scirs2_benchmarking::{
361        BaselineComparison, BenchmarkConfig, BenchmarkReport, BenchmarkRun, CircuitBenchmark,
362        CircuitMetrics as BenchmarkCircuitMetrics, DescriptiveStats, Distribution, DistributionFit,
363        HypothesisTestResult, InsightCategory, OutlierAnalysis, OutlierDetectionMethod,
364        PerformanceInsight, PracticalSignificance, RegressionAnalysis, StatisticalAnalyzer,
365        StatisticalTest,
366    };
367    pub use crate::scirs2_cross_compilation_enhanced::{
368        AppliedOptimization, BatchCompilationReport, BatchCompilationResult, BatchPerformanceStats,
369        CircuitMetrics, CircuitSize, CircuitVisualization, ClassicalOpType, ClassicalOperation,
370        CodeFormat, ComparisonVisualization, CompilationComplexity, CompilationRecommendation,
371        CompilationReport, CompilationStage, CompilationStrategy, CompilationSummary,
372        CrossCompilationConfig, CrossCompilationResult, DataFlow, Difference, DifferenceType,
373        EnhancedCrossCompilationConfig, EnhancedCrossCompiler, FailedCompilation, FlowEdge,
374        FlowNode, GraphLayout, IRClassicalOp, IRClassicalOpType, IREdge, IRGate, IRGraph, IRNode,
375        IROperation, IROperationType, IRVisualization, NodeType, OperationType, OptimizationImpact,
376        OptimizationImprovement, OptimizationTimeline, OptimizationVisualization, ParsedCircuit,
377        QuantumFramework, QuantumIR, QuantumOperation,
378        RecommendationCategory as CompilationRecommendationCategory, ResourceUsage, SourceCircuit,
379        StageAnalysis, StageImpact, StagePerformance, TargetCode, TargetPlatform, TimelineEvent,
380        ValidationError as CrossValidationError, ValidationErrorType,
381        ValidationResult as CrossValidationResult, ValidationWarning as CrossValidationWarning,
382        ValidationWarningType, VisualCompilationFlow,
383    };
384    pub use crate::scirs2_integration::{
385        AnalysisResult, AnalyzerConfig, GraphMetrics, GraphMotif, OptimizationSuggestion,
386        SciRS2CircuitAnalyzer, SciRS2CircuitGraph, SciRS2Edge, SciRS2Node, SciRS2NodeType,
387    };
388    pub use crate::scirs2_matrices::{
389        CircuitToSparseMatrix, Complex64, SparseFormat, SparseGate, SparseGateLibrary,
390        SparseMatrix, SparseOptimizer,
391    };
392    pub use crate::scirs2_optimization::{
393        CircuitTemplate, EarlyStoppingCriteria, KernelType, ObjectiveFunction,
394        OptimizationAlgorithm, OptimizationConfig, OptimizationHistory, Parameter,
395        ParameterizedGate, QAOAObjective, QuantumCircuitOptimizer, VQEObjective,
396    };
397    pub use crate::scirs2_pulse_control_enhanced::{
398        AWGSpecifications, AmplitudeNoiseSpec, CosinePulse, CustomPulseShape, DRAGPulse,
399        EnhancedPulseConfig, EnhancedPulseController, ErfPulse, FilterState, FilterType,
400        GateAnalysis, GaussianPulse, HardwareConstraints, IQMixerSpecifications,
401        MitigationStrategy, OptimizationFeedback, OptimizationStep, PhaseNoiseSpec,
402        PredistortionModel, PulseChannel, PulseConstraints, PulseControlConfig, PulseExportFormat,
403        PulseLibrary, PulseMetadata, PulseOptimizationModel, PulseOptimizationObjective,
404        PulseSequence, SechPulse, SignalProcessingConfig, SignalProcessor, SignalProcessorConfig,
405        Waveform as EnhancedWaveform, WindowType,
406    };
407    pub use crate::scirs2_qasm_compiler_enhanced::{
408        ASTNode, ASTStatistics, AnalysisOptions, BinaryOp, CompilationResult,
409        CompilationStatistics, CompilationTarget, CompilationVisualizations, CompilationWarning,
410        EnhancedQASMCompiler, EnhancedQASMConfig, ErrorType, ExportFormat, Expression,
411        GateDefinition, GeneratedCode, Location, OptimizedQASM, ParsedQASM, QASMCompilerConfig,
412        QASMVersion, Token, TokenType, TypeCheckingLevel, UnaryOp, ValidationResult,
413        ValidationWarning, WarningType, AST,
414    };
415    pub use crate::scirs2_similarity::{
416        BatchSimilarityComputer, CircuitDistanceMetrics, CircuitFeatures,
417        CircuitSimilarityAnalyzer, CircuitSimilarityMetrics, EntanglementStructure,
418        GraphKernelType, GraphSimilarityAlgorithm, MLModelType, SciRS2Graph, SimilarityAlgorithm,
419        SimilarityConfig, SimilarityWeights,
420    };
421    pub use crate::scirs2_transpiler_enhanced::{
422        AdvancedHardwareFeatures, Bottleneck, BottleneckType, CircuitAnalysis,
423        CircuitFeatures as EnhancedCircuitFeatures, CompatibilityReport, DecomposedGate,
424        DecompositionResult, DecompositionStrategy, EnhancedTranspiler, EnhancedTranspilerConfig,
425        ErrorMitigationSupport, GateDecomposition, GateStatistics, HardwareBackend, ImpactLevel,
426        MitigationResult, NativeGateSet as EnhancedNativeGateSet, ParallelismAnalysis, PassResult,
427        PerformanceConstraints, PerformanceMetrics, PerformancePrediction, PredictionModel,
428        RoutingFeedback, RoutingModel, SuggestionType, SwapGate, TopologyAnalysis, TopologyType,
429        TranspilationPass, TranspilationResult as EnhancedTranspilationResult,
430        VisualRepresentation,
431    };
432    pub use crate::simulator_interface::{
433        CircuitCompiler, CompiledCircuit, ContractionStrategy, ExecutionResult, InstructionSet,
434        MemoryOptimization, OptimizationLevel as SimulatorOptimizationLevel, ResourceRequirements,
435        SimulatorBackend, SimulatorExecutor,
436    };
437    pub use crate::slicing::{CircuitSlice, CircuitSlicer, SlicingResult, SlicingStrategy};
438    pub use crate::synthesis::{
439        GateSet, MultiQubitSynthesizer, SingleQubitSynthesizer, SynthesisConfig,
440        TwoQubitSynthesizer, UnitaryOperation, UnitarySynthesizer,
441    };
442    pub use crate::tensor_network::{
443        CircuitToTensorNetwork, CompressedCircuit, CompressionMethod, MatrixProductState, Tensor,
444        TensorNetwork, TensorNetworkCompressor,
445    };
446    pub use crate::topological::{
447        Anyon, AnyonModel, AnyonType, BraidingOperation, BraidingOptimizer, OptimizationStrategy,
448        TopologicalCircuit, TopologicalCompiler, TopologicalGate,
449    };
450    pub use crate::topology::{TopologicalAnalysis, TopologicalAnalyzer, TopologicalStrategy};
451    pub use crate::transpiler::{
452        DeviceTranspiler, HardwareSpec, NativeGateSet, TranspilationOptions, TranspilationResult,
453        TranspilationStats, TranspilationStrategy,
454    };
455    pub use crate::validation::{
456        CircuitValidator, ClassicalConstraints, ConnectivityConstraints, DepthLimits,
457        GateRestrictions, MeasurementConstraints, ResourceLimits, ValidationRules, ValidationStats,
458        ValidationSuggestion,
459    };
460    pub use crate::verifier::{
461        BinaryOperator, CircuitInvariant, CircuitLocation as VerifierCircuitLocation,
462        ComplexityClass as VerifierComplexityClass, ConfidenceStatistics,
463        ConstraintSatisfactionResult, ConstraintType, CorrectnessChecker, CorrectnessCriterion,
464        CorrectnessResult, Counterexample, CustomInvariantChecker, CustomPredicate,
465        EntanglementType, ErrorBounds, ErrorModel, EvidenceType, ExecutionTrace, ExpectedOutput,
466        FormalProof, InvariantCheckResult, InvariantChecker, IssueSeverity,
467        IssueType as VerifierIssueType, ModelCheckResult, ModelChecker, NumericalEvidence,
468        ProofComplexityMetrics, ProofNode, ProofObligation, ProofStatus, ProofStep, ProofStrategy,
469        ProofTree, PropertyChecker, PropertyVerificationResult, QuantumProperty, QuantumState,
470        QuantumTheorem, QuantumVerifier, StateSpace, StateSpaceStatistics, StateTransition,
471        SuperpositionType, SymbolicConstraint, SymbolicExecutionConfig, SymbolicExecutionResult,
472        SymbolicExecutionStatus, SymbolicExecutor, SymbolicExpression, SymbolicState, SymbolicType,
473        SymbolicVariable, TemporalProperty, TestCase, TestOutcome, TheoremProver, TheoremResult,
474        UnaryOperator, VerificationIssue, VerificationMetadata, VerificationOutcome,
475        VerificationResult, VerificationStatistics, VerificationStatus, VerifierConfig,
476        VerifierTestResult, ViolationSeverity,
477    };
478    pub use crate::vqe::{
479        PauliOperator, VQEAnsatz, VQECircuit, VQEObservable, VQEOptimizer, VQEOptimizerType,
480        VQEResult,
481    };
482    pub use crate::zx_calculus::{
483        OptimizedZXResult, ZXDiagram, ZXEdge, ZXNode, ZXOptimizationResult, ZXOptimizer,
484    };
485    pub use quantrs2_core::qubit::QubitId as Qubit;
486}
487
488// The following should be proc macros, but we'll implement them later
489// for now they're just stubs
490
491/// Creates a qubit set for quantum operations
492///
493/// # Example
494///
495/// ```
496/// use quantrs2_circuit::qubits;
497/// let qs = qubits![0, 1, 2];
498/// ```
499#[macro_export]
500macro_rules! qubits {
501    ($($id:expr),* $(,)?) => {
502        {
503            use quantrs2_core::qubit::QubitSet;
504
505            let mut qs = QubitSet::new();
506            $(qs.add($id);)*
507            qs
508        }
509    };
510}
511
512/// Constructs a quantum circuit with a fixed number of qubits
513///
514/// # Example
515///
516/// ```
517/// use quantrs2_circuit::circuit;
518/// let circuit = circuit![4];
519/// ```
520#[macro_export]
521macro_rules! circuit {
522    ($n:expr) => {
523        quantrs2_circuit::builder::Circuit::<$n>::new()
524    };
525}
526
527/// Provides a DSL for constructing quantum circuits
528///
529/// # Example
530///
531/// ```
532/// use quantrs2_circuit::quantum;
533///
534/// let my_circuit = quantum! {
535///     let qc = circuit(4);  // 4 qubits
536///     qc.h(0);
537///     qc.cnot(0, 1);
538///     qc.measure_all();
539/// };
540/// ```
541#[macro_export]
542macro_rules! quantum {
543    (
544        let $var:ident = circuit($n:expr);
545        $( $stmt_var:ident . $method:ident ( $( $args:expr ),* $(,)? ) ; )*
546    ) => {
547        {
548            let mut $var = quantrs2_circuit::builder::Circuit::<$n>::new();
549            $(
550                $stmt_var.$method($($args),*).expect("Quantum gate operation failed");
551            )*
552            $var
553        }
554    };
555}