quantrs2_core/api/
prelude.rs

1//! Organized prelude modules for different use cases
2
3/// Essential types for basic quantum programming
4/// This is the recommended starting point for most users
5pub mod essentials {
6    //! Core types needed for basic quantum circuit programming
7
8    // Fundamental quantum types
9    pub use crate::api::quantum::{GateOp, QubitId, Register};
10    pub use crate::api::quantum::{MeasurementOutcome, QuantumOperation};
11    pub use crate::api::quantum::{QuantRS2Error, QuantRS2Result};
12
13    // Basic mathematical operations
14    pub use crate::api::math::{tensor_product_many, DenseMatrix, QuantumMatrix};
15
16    // Essential synthesis tools
17    pub use crate::api::synthesis::{synthesize_unitary, SingleQubitDecomposition};
18
19    // Re-export num_complex for convenience
20    pub use scirs2_core::Complex64;
21}
22
23/// Complete API for quantum algorithm development
24pub mod algorithms {
25    //! Everything needed for developing quantum algorithms
26
27    pub use super::essentials::*;
28
29    // Variational algorithms
30    pub use crate::api::variational::*;
31
32    // Advanced algorithms
33    pub use crate::api::algorithms::*;
34
35    // Optimization tools
36    pub use crate::api::optimization::{OptimizationChain, OptimizationPass};
37
38    // ML integration
39    pub use crate::api::quantum_ml::*;
40
41    // Symbolic computation
42    pub use crate::api::symbolic::*;
43}
44
45/// Hardware programming and device interfaces
46pub mod hardware {
47    //! Types for programming quantum hardware
48
49    pub use super::essentials::*;
50
51    // Hardware interfaces
52    pub use crate::api::hardware::*;
53
54    // Backends and GPU support
55    pub use crate::api::backends::*;
56
57    // Error correction
58    pub use crate::api::error_correction::*;
59}
60
61/// Advanced simulation and research tools
62pub mod research {
63    //! Advanced features for quantum computing research
64
65    pub use super::algorithms::*;
66
67    // Tensor networks
68    pub use crate::api::tensor_networks::*;
69
70    // Topological computing
71    pub use crate::api::topological::*;
72
73    // Networking and distributed computing
74    pub use crate::api::networking::*;
75
76    // ZX-calculus
77    pub use crate::api::zx_calculus::*;
78
79    // Batch processing
80    pub use crate::api::batch::*;
81}
82
83/// Developer tools and debugging utilities
84pub mod dev_tools {
85    //! Tools for debugging and development
86
87    pub use super::essentials::*;
88
89    // Debugging and profiling
90    pub use crate::api::dev_tools::*;
91
92    // SciRS2 enhanced tools
93    pub use crate::api::scirs2::*;
94}
95
96/// Python integration (when feature enabled)
97#[cfg(feature = "python")]
98pub mod python {
99    //! Python bindings and Jupyter notebook integration
100
101    pub use crate::api::python::*;
102}
103
104/// Legacy compatibility - provides the old flat API
105///
106/// This module re-exports all types in the old flat structure
107/// for backward compatibility. Use is discouraged for new code.
108#[deprecated(
109    since = "1.0.0",
110    note = "Use organized modules like `essentials`, `algorithms`, etc."
111)]
112pub mod legacy {
113    //! Backward compatibility exports
114    //!
115    //! This module provides the old flat API structure for compatibility.
116    //! New code should use the organized modules instead.
117
118    pub use crate::api::algorithms::*;
119    pub use crate::api::backends::*;
120    pub use crate::api::batch::*;
121    pub use crate::api::dev_tools::*;
122    pub use crate::api::error_correction::*;
123    pub use crate::api::hardware::*;
124    pub use crate::api::math::*;
125    pub use crate::api::networking::*;
126    pub use crate::api::optimization::*;
127    pub use crate::api::quantum::*;
128    pub use crate::api::quantum_ml::*;
129    pub use crate::api::scirs2::*;
130    pub use crate::api::symbolic::*;
131    pub use crate::api::synthesis::*;
132    pub use crate::api::tensor_networks::*;
133    pub use crate::api::topological::*;
134    pub use crate::api::variational::*;
135    pub use crate::api::zx_calculus::*;
136
137    #[cfg(feature = "python")]
138    pub use crate::api::python::*;
139}
140
141/// Full API re-export (non-deprecated flat access)
142///
143/// This provides access to all functionality in a flat namespace
144/// while maintaining the new naming conventions
145pub mod full {
146    //! Complete API access with new naming conventions
147
148    pub use crate::api::algorithms::*;
149    pub use crate::api::backends::*;
150    pub use crate::api::batch::*;
151    pub use crate::api::dev_tools::*;
152    pub use crate::api::error_correction::*;
153    pub use crate::api::hardware::*;
154    pub use crate::api::math::*;
155    pub use crate::api::networking::*;
156    pub use crate::api::optimization::*;
157    pub use crate::api::quantum::*;
158    pub use crate::api::quantum_ml::*;
159    pub use crate::api::scirs2::*;
160    pub use crate::api::symbolic::*;
161    pub use crate::api::synthesis::*;
162    pub use crate::api::tensor_networks::*;
163    pub use crate::api::topological::*;
164    pub use crate::api::variational::*;
165    pub use crate::api::zx_calculus::*;
166
167    #[cfg(feature = "python")]
168    pub use crate::api::python::*;
169}