pub struct QuantumNAS { /* private fields */ }Expand description
Main quantum neural architecture search engine
Implementations§
Source§impl QuantumNAS
impl QuantumNAS
Sourcepub fn new(strategy: SearchStrategy, search_space: SearchSpace) -> Self
pub fn new(strategy: SearchStrategy, search_space: SearchSpace) -> Self
Create a new quantum NAS instance
Examples found in repository?
examples/quantum_nas.rs (line 69)
57fn evolutionary_search_demo() -> Result<()> {
58 // Create search space
59 let search_space = create_default_search_space();
60
61 // Configure evolutionary strategy
62 let strategy = SearchStrategy::Evolutionary {
63 population_size: 20,
64 mutation_rate: 0.2,
65 crossover_rate: 0.7,
66 elitism_ratio: 0.1,
67 };
68
69 let mut nas = QuantumNAS::new(strategy, search_space);
70
71 println!(" Created evolutionary NAS:");
72 println!(" - Population size: 20");
73 println!(" - Mutation rate: 0.2");
74 println!(" - Crossover rate: 0.7");
75 println!(" - Elitism ratio: 0.1");
76
77 // Set evaluation data (synthetic for demo)
78 let eval_data = Array2::from_shape_fn((100, 4), |(i, j)| (i as f64 + j as f64) / 50.0);
79 let eval_labels = Array1::from_shape_fn(100, |i| i % 2);
80 nas.set_evaluation_data(eval_data, eval_labels);
81
82 // Run search
83 println!("\n Running evolutionary search for 10 generations...");
84 let best_architectures = nas.search(10)?;
85
86 println!(" Search complete!");
87 println!(
88 " - Best architectures found: {}",
89 best_architectures.len()
90 );
91
92 if let Some(best) = best_architectures.first() {
93 println!(" - Best architecture: {best}");
94 println!(" - Circuit depth: {}", best.metrics.circuit_depth);
95 println!(" - Parameter count: {}", best.metrics.parameter_count);
96
97 if let Some(expressivity) = best.properties.expressivity {
98 println!(" - Expressivity: {expressivity:.3}");
99 }
100 }
101
102 // Show search summary
103 let summary = nas.get_search_summary();
104 println!(
105 " - Total architectures evaluated: {}",
106 summary.total_architectures_evaluated
107 );
108 println!(" - Pareto front size: {}", summary.pareto_front_size);
109
110 Ok(())
111}
112
113/// Random search baseline demonstration
114fn random_search_demo() -> Result<()> {
115 let search_space = create_default_search_space();
116 let strategy = SearchStrategy::Random { num_samples: 50 };
117
118 let mut nas = QuantumNAS::new(strategy, search_space);
119
120 println!(" Created random search NAS:");
121 println!(" - Number of samples: 50");
122
123 // Generate synthetic evaluation data
124 let eval_data = Array2::from_shape_fn((80, 4), |(i, j)| {
125 0.5f64.mul_add((i as f64).sin(), 0.3 * (j as f64).cos())
126 });
127 let eval_labels = Array1::from_shape_fn(80, |i| usize::from(i % 3 != 0));
128 nas.set_evaluation_data(eval_data, eval_labels);
129
130 println!("\n Running random search...");
131 let best_architectures = nas.search(50)?;
132
133 println!(" Random search complete!");
134 if let Some(best) = best_architectures.first() {
135 println!(" - Best random architecture: {best}");
136 if let Some(accuracy) = best.metrics.accuracy {
137 println!(" - Accuracy: {accuracy:.3}");
138 }
139 }
140
141 Ok(())
142}
143
144/// Reinforcement learning search demonstration
145fn rl_search_demo() -> Result<()> {
146 let search_space = create_custom_search_space();
147
148 let strategy = SearchStrategy::ReinforcementLearning {
149 agent_type: RLAgentType::PolicyGradient,
150 exploration_rate: 0.3,
151 learning_rate: 0.01,
152 };
153
154 let mut nas = QuantumNAS::new(strategy, search_space);
155
156 println!(" Created RL-based NAS:");
157 println!(" - Agent type: Policy Gradient");
158 println!(" - Exploration rate: 0.3");
159 println!(" - Learning rate: 0.01");
160
161 println!("\n Running RL search for 100 episodes...");
162 let best_architectures = nas.search(100)?;
163
164 println!(" RL search complete!");
165 println!(" - Architectures found: {}", best_architectures.len());
166
167 if let Some(best) = best_architectures.first() {
168 println!(" - Best RL architecture: {best}");
169 if let Some(entanglement) = best.properties.entanglement_capability {
170 println!(" - Entanglement capability: {entanglement:.3}");
171 }
172 }
173
174 Ok(())
175}
176
177/// Bayesian optimization search demonstration
178fn bayesian_search_demo() -> Result<()> {
179 let search_space = create_default_search_space();
180
181 let strategy = SearchStrategy::BayesianOptimization {
182 acquisition_function: AcquisitionFunction::ExpectedImprovement,
183 num_initial_points: 10,
184 };
185
186 let mut nas = QuantumNAS::new(strategy, search_space);
187
188 println!(" Created Bayesian optimization NAS:");
189 println!(" - Acquisition function: Expected Improvement");
190 println!(" - Initial random points: 10");
191
192 // Set up evaluation data
193 let eval_data = generate_quantum_data(60, 4);
194 let eval_labels = Array1::from_shape_fn(60, |i| i % 3);
195 nas.set_evaluation_data(eval_data, eval_labels);
196
197 println!("\n Running Bayesian optimization for 30 iterations...");
198 let best_architectures = nas.search(30)?;
199
200 println!(" Bayesian optimization complete!");
201 if let Some(best) = best_architectures.first() {
202 println!(" - Best Bayesian architecture: {best}");
203 if let Some(hardware_eff) = best.metrics.hardware_efficiency {
204 println!(" - Hardware efficiency: {hardware_eff:.3}");
205 }
206 }
207
208 Ok(())
209}
210
211/// DARTS demonstration
212fn darts_demo() -> Result<()> {
213 let search_space = create_darts_search_space();
214
215 let strategy = SearchStrategy::DARTS {
216 learning_rate: 0.01,
217 weight_decay: 1e-4,
218 };
219
220 let mut nas = QuantumNAS::new(strategy, search_space);
221
222 println!(" Created DARTS NAS:");
223 println!(" - Learning rate: 0.01");
224 println!(" - Weight decay: 1e-4");
225 println!(" - Differentiable architecture search");
226
227 println!("\n Running DARTS for 200 epochs...");
228 let best_architectures = nas.search(200)?;
229
230 println!(" DARTS search complete!");
231 if let Some(best) = best_architectures.first() {
232 println!(" - DARTS architecture: {best}");
233 println!(" - Learned through gradient-based optimization");
234
235 if let Some(gradient_var) = best.properties.gradient_variance {
236 println!(" - Gradient variance: {gradient_var:.3}");
237 }
238 }
239
240 Ok(())
241}
242
243/// Multi-objective optimization demonstration
244fn multi_objective_demo() -> Result<()> {
245 let search_space = create_default_search_space();
246
247 let strategy = SearchStrategy::Evolutionary {
248 population_size: 30,
249 mutation_rate: 0.15,
250 crossover_rate: 0.8,
251 elitism_ratio: 0.2,
252 };
253
254 let mut nas = QuantumNAS::new(strategy, search_space);
255
256 println!(" Multi-objective optimization:");
257 println!(" - Optimizing accuracy vs. complexity");
258 println!(" - Finding Pareto-optimal architectures");
259
260 // Run search
261 nas.search(15)?;
262
263 // Analyze Pareto front
264 let pareto_front = nas.get_pareto_front();
265 println!(" Pareto front analysis:");
266 println!(" - Pareto-optimal architectures: {}", pareto_front.len());
267
268 for (i, arch) in pareto_front.iter().take(3).enumerate() {
269 println!(
270 " Architecture {}: {} params, {:.3} accuracy",
271 i + 1,
272 arch.metrics.parameter_count,
273 arch.metrics.accuracy.unwrap_or(0.0)
274 );
275 }
276
277 Ok(())
278}Sourcepub fn set_evaluation_data(&mut self, data: Array2<f64>, labels: Array1<usize>)
pub fn set_evaluation_data(&mut self, data: Array2<f64>, labels: Array1<usize>)
Set evaluation dataset
Examples found in repository?
examples/quantum_nas.rs (line 80)
57fn evolutionary_search_demo() -> Result<()> {
58 // Create search space
59 let search_space = create_default_search_space();
60
61 // Configure evolutionary strategy
62 let strategy = SearchStrategy::Evolutionary {
63 population_size: 20,
64 mutation_rate: 0.2,
65 crossover_rate: 0.7,
66 elitism_ratio: 0.1,
67 };
68
69 let mut nas = QuantumNAS::new(strategy, search_space);
70
71 println!(" Created evolutionary NAS:");
72 println!(" - Population size: 20");
73 println!(" - Mutation rate: 0.2");
74 println!(" - Crossover rate: 0.7");
75 println!(" - Elitism ratio: 0.1");
76
77 // Set evaluation data (synthetic for demo)
78 let eval_data = Array2::from_shape_fn((100, 4), |(i, j)| (i as f64 + j as f64) / 50.0);
79 let eval_labels = Array1::from_shape_fn(100, |i| i % 2);
80 nas.set_evaluation_data(eval_data, eval_labels);
81
82 // Run search
83 println!("\n Running evolutionary search for 10 generations...");
84 let best_architectures = nas.search(10)?;
85
86 println!(" Search complete!");
87 println!(
88 " - Best architectures found: {}",
89 best_architectures.len()
90 );
91
92 if let Some(best) = best_architectures.first() {
93 println!(" - Best architecture: {best}");
94 println!(" - Circuit depth: {}", best.metrics.circuit_depth);
95 println!(" - Parameter count: {}", best.metrics.parameter_count);
96
97 if let Some(expressivity) = best.properties.expressivity {
98 println!(" - Expressivity: {expressivity:.3}");
99 }
100 }
101
102 // Show search summary
103 let summary = nas.get_search_summary();
104 println!(
105 " - Total architectures evaluated: {}",
106 summary.total_architectures_evaluated
107 );
108 println!(" - Pareto front size: {}", summary.pareto_front_size);
109
110 Ok(())
111}
112
113/// Random search baseline demonstration
114fn random_search_demo() -> Result<()> {
115 let search_space = create_default_search_space();
116 let strategy = SearchStrategy::Random { num_samples: 50 };
117
118 let mut nas = QuantumNAS::new(strategy, search_space);
119
120 println!(" Created random search NAS:");
121 println!(" - Number of samples: 50");
122
123 // Generate synthetic evaluation data
124 let eval_data = Array2::from_shape_fn((80, 4), |(i, j)| {
125 0.5f64.mul_add((i as f64).sin(), 0.3 * (j as f64).cos())
126 });
127 let eval_labels = Array1::from_shape_fn(80, |i| usize::from(i % 3 != 0));
128 nas.set_evaluation_data(eval_data, eval_labels);
129
130 println!("\n Running random search...");
131 let best_architectures = nas.search(50)?;
132
133 println!(" Random search complete!");
134 if let Some(best) = best_architectures.first() {
135 println!(" - Best random architecture: {best}");
136 if let Some(accuracy) = best.metrics.accuracy {
137 println!(" - Accuracy: {accuracy:.3}");
138 }
139 }
140
141 Ok(())
142}
143
144/// Reinforcement learning search demonstration
145fn rl_search_demo() -> Result<()> {
146 let search_space = create_custom_search_space();
147
148 let strategy = SearchStrategy::ReinforcementLearning {
149 agent_type: RLAgentType::PolicyGradient,
150 exploration_rate: 0.3,
151 learning_rate: 0.01,
152 };
153
154 let mut nas = QuantumNAS::new(strategy, search_space);
155
156 println!(" Created RL-based NAS:");
157 println!(" - Agent type: Policy Gradient");
158 println!(" - Exploration rate: 0.3");
159 println!(" - Learning rate: 0.01");
160
161 println!("\n Running RL search for 100 episodes...");
162 let best_architectures = nas.search(100)?;
163
164 println!(" RL search complete!");
165 println!(" - Architectures found: {}", best_architectures.len());
166
167 if let Some(best) = best_architectures.first() {
168 println!(" - Best RL architecture: {best}");
169 if let Some(entanglement) = best.properties.entanglement_capability {
170 println!(" - Entanglement capability: {entanglement:.3}");
171 }
172 }
173
174 Ok(())
175}
176
177/// Bayesian optimization search demonstration
178fn bayesian_search_demo() -> Result<()> {
179 let search_space = create_default_search_space();
180
181 let strategy = SearchStrategy::BayesianOptimization {
182 acquisition_function: AcquisitionFunction::ExpectedImprovement,
183 num_initial_points: 10,
184 };
185
186 let mut nas = QuantumNAS::new(strategy, search_space);
187
188 println!(" Created Bayesian optimization NAS:");
189 println!(" - Acquisition function: Expected Improvement");
190 println!(" - Initial random points: 10");
191
192 // Set up evaluation data
193 let eval_data = generate_quantum_data(60, 4);
194 let eval_labels = Array1::from_shape_fn(60, |i| i % 3);
195 nas.set_evaluation_data(eval_data, eval_labels);
196
197 println!("\n Running Bayesian optimization for 30 iterations...");
198 let best_architectures = nas.search(30)?;
199
200 println!(" Bayesian optimization complete!");
201 if let Some(best) = best_architectures.first() {
202 println!(" - Best Bayesian architecture: {best}");
203 if let Some(hardware_eff) = best.metrics.hardware_efficiency {
204 println!(" - Hardware efficiency: {hardware_eff:.3}");
205 }
206 }
207
208 Ok(())
209}Sourcepub fn search(
&mut self,
max_iterations: usize,
) -> Result<Vec<ArchitectureCandidate>>
pub fn search( &mut self, max_iterations: usize, ) -> Result<Vec<ArchitectureCandidate>>
Search for optimal architectures
Examples found in repository?
examples/quantum_nas.rs (line 84)
57fn evolutionary_search_demo() -> Result<()> {
58 // Create search space
59 let search_space = create_default_search_space();
60
61 // Configure evolutionary strategy
62 let strategy = SearchStrategy::Evolutionary {
63 population_size: 20,
64 mutation_rate: 0.2,
65 crossover_rate: 0.7,
66 elitism_ratio: 0.1,
67 };
68
69 let mut nas = QuantumNAS::new(strategy, search_space);
70
71 println!(" Created evolutionary NAS:");
72 println!(" - Population size: 20");
73 println!(" - Mutation rate: 0.2");
74 println!(" - Crossover rate: 0.7");
75 println!(" - Elitism ratio: 0.1");
76
77 // Set evaluation data (synthetic for demo)
78 let eval_data = Array2::from_shape_fn((100, 4), |(i, j)| (i as f64 + j as f64) / 50.0);
79 let eval_labels = Array1::from_shape_fn(100, |i| i % 2);
80 nas.set_evaluation_data(eval_data, eval_labels);
81
82 // Run search
83 println!("\n Running evolutionary search for 10 generations...");
84 let best_architectures = nas.search(10)?;
85
86 println!(" Search complete!");
87 println!(
88 " - Best architectures found: {}",
89 best_architectures.len()
90 );
91
92 if let Some(best) = best_architectures.first() {
93 println!(" - Best architecture: {best}");
94 println!(" - Circuit depth: {}", best.metrics.circuit_depth);
95 println!(" - Parameter count: {}", best.metrics.parameter_count);
96
97 if let Some(expressivity) = best.properties.expressivity {
98 println!(" - Expressivity: {expressivity:.3}");
99 }
100 }
101
102 // Show search summary
103 let summary = nas.get_search_summary();
104 println!(
105 " - Total architectures evaluated: {}",
106 summary.total_architectures_evaluated
107 );
108 println!(" - Pareto front size: {}", summary.pareto_front_size);
109
110 Ok(())
111}
112
113/// Random search baseline demonstration
114fn random_search_demo() -> Result<()> {
115 let search_space = create_default_search_space();
116 let strategy = SearchStrategy::Random { num_samples: 50 };
117
118 let mut nas = QuantumNAS::new(strategy, search_space);
119
120 println!(" Created random search NAS:");
121 println!(" - Number of samples: 50");
122
123 // Generate synthetic evaluation data
124 let eval_data = Array2::from_shape_fn((80, 4), |(i, j)| {
125 0.5f64.mul_add((i as f64).sin(), 0.3 * (j as f64).cos())
126 });
127 let eval_labels = Array1::from_shape_fn(80, |i| usize::from(i % 3 != 0));
128 nas.set_evaluation_data(eval_data, eval_labels);
129
130 println!("\n Running random search...");
131 let best_architectures = nas.search(50)?;
132
133 println!(" Random search complete!");
134 if let Some(best) = best_architectures.first() {
135 println!(" - Best random architecture: {best}");
136 if let Some(accuracy) = best.metrics.accuracy {
137 println!(" - Accuracy: {accuracy:.3}");
138 }
139 }
140
141 Ok(())
142}
143
144/// Reinforcement learning search demonstration
145fn rl_search_demo() -> Result<()> {
146 let search_space = create_custom_search_space();
147
148 let strategy = SearchStrategy::ReinforcementLearning {
149 agent_type: RLAgentType::PolicyGradient,
150 exploration_rate: 0.3,
151 learning_rate: 0.01,
152 };
153
154 let mut nas = QuantumNAS::new(strategy, search_space);
155
156 println!(" Created RL-based NAS:");
157 println!(" - Agent type: Policy Gradient");
158 println!(" - Exploration rate: 0.3");
159 println!(" - Learning rate: 0.01");
160
161 println!("\n Running RL search for 100 episodes...");
162 let best_architectures = nas.search(100)?;
163
164 println!(" RL search complete!");
165 println!(" - Architectures found: {}", best_architectures.len());
166
167 if let Some(best) = best_architectures.first() {
168 println!(" - Best RL architecture: {best}");
169 if let Some(entanglement) = best.properties.entanglement_capability {
170 println!(" - Entanglement capability: {entanglement:.3}");
171 }
172 }
173
174 Ok(())
175}
176
177/// Bayesian optimization search demonstration
178fn bayesian_search_demo() -> Result<()> {
179 let search_space = create_default_search_space();
180
181 let strategy = SearchStrategy::BayesianOptimization {
182 acquisition_function: AcquisitionFunction::ExpectedImprovement,
183 num_initial_points: 10,
184 };
185
186 let mut nas = QuantumNAS::new(strategy, search_space);
187
188 println!(" Created Bayesian optimization NAS:");
189 println!(" - Acquisition function: Expected Improvement");
190 println!(" - Initial random points: 10");
191
192 // Set up evaluation data
193 let eval_data = generate_quantum_data(60, 4);
194 let eval_labels = Array1::from_shape_fn(60, |i| i % 3);
195 nas.set_evaluation_data(eval_data, eval_labels);
196
197 println!("\n Running Bayesian optimization for 30 iterations...");
198 let best_architectures = nas.search(30)?;
199
200 println!(" Bayesian optimization complete!");
201 if let Some(best) = best_architectures.first() {
202 println!(" - Best Bayesian architecture: {best}");
203 if let Some(hardware_eff) = best.metrics.hardware_efficiency {
204 println!(" - Hardware efficiency: {hardware_eff:.3}");
205 }
206 }
207
208 Ok(())
209}
210
211/// DARTS demonstration
212fn darts_demo() -> Result<()> {
213 let search_space = create_darts_search_space();
214
215 let strategy = SearchStrategy::DARTS {
216 learning_rate: 0.01,
217 weight_decay: 1e-4,
218 };
219
220 let mut nas = QuantumNAS::new(strategy, search_space);
221
222 println!(" Created DARTS NAS:");
223 println!(" - Learning rate: 0.01");
224 println!(" - Weight decay: 1e-4");
225 println!(" - Differentiable architecture search");
226
227 println!("\n Running DARTS for 200 epochs...");
228 let best_architectures = nas.search(200)?;
229
230 println!(" DARTS search complete!");
231 if let Some(best) = best_architectures.first() {
232 println!(" - DARTS architecture: {best}");
233 println!(" - Learned through gradient-based optimization");
234
235 if let Some(gradient_var) = best.properties.gradient_variance {
236 println!(" - Gradient variance: {gradient_var:.3}");
237 }
238 }
239
240 Ok(())
241}
242
243/// Multi-objective optimization demonstration
244fn multi_objective_demo() -> Result<()> {
245 let search_space = create_default_search_space();
246
247 let strategy = SearchStrategy::Evolutionary {
248 population_size: 30,
249 mutation_rate: 0.15,
250 crossover_rate: 0.8,
251 elitism_ratio: 0.2,
252 };
253
254 let mut nas = QuantumNAS::new(strategy, search_space);
255
256 println!(" Multi-objective optimization:");
257 println!(" - Optimizing accuracy vs. complexity");
258 println!(" - Finding Pareto-optimal architectures");
259
260 // Run search
261 nas.search(15)?;
262
263 // Analyze Pareto front
264 let pareto_front = nas.get_pareto_front();
265 println!(" Pareto front analysis:");
266 println!(" - Pareto-optimal architectures: {}", pareto_front.len());
267
268 for (i, arch) in pareto_front.iter().take(3).enumerate() {
269 println!(
270 " Architecture {}: {} params, {:.3} accuracy",
271 i + 1,
272 arch.metrics.parameter_count,
273 arch.metrics.accuracy.unwrap_or(0.0)
274 );
275 }
276
277 Ok(())
278}Sourcepub fn get_search_summary(&self) -> SearchSummary
pub fn get_search_summary(&self) -> SearchSummary
Get search results summary
Examples found in repository?
examples/quantum_nas.rs (line 103)
57fn evolutionary_search_demo() -> Result<()> {
58 // Create search space
59 let search_space = create_default_search_space();
60
61 // Configure evolutionary strategy
62 let strategy = SearchStrategy::Evolutionary {
63 population_size: 20,
64 mutation_rate: 0.2,
65 crossover_rate: 0.7,
66 elitism_ratio: 0.1,
67 };
68
69 let mut nas = QuantumNAS::new(strategy, search_space);
70
71 println!(" Created evolutionary NAS:");
72 println!(" - Population size: 20");
73 println!(" - Mutation rate: 0.2");
74 println!(" - Crossover rate: 0.7");
75 println!(" - Elitism ratio: 0.1");
76
77 // Set evaluation data (synthetic for demo)
78 let eval_data = Array2::from_shape_fn((100, 4), |(i, j)| (i as f64 + j as f64) / 50.0);
79 let eval_labels = Array1::from_shape_fn(100, |i| i % 2);
80 nas.set_evaluation_data(eval_data, eval_labels);
81
82 // Run search
83 println!("\n Running evolutionary search for 10 generations...");
84 let best_architectures = nas.search(10)?;
85
86 println!(" Search complete!");
87 println!(
88 " - Best architectures found: {}",
89 best_architectures.len()
90 );
91
92 if let Some(best) = best_architectures.first() {
93 println!(" - Best architecture: {best}");
94 println!(" - Circuit depth: {}", best.metrics.circuit_depth);
95 println!(" - Parameter count: {}", best.metrics.parameter_count);
96
97 if let Some(expressivity) = best.properties.expressivity {
98 println!(" - Expressivity: {expressivity:.3}");
99 }
100 }
101
102 // Show search summary
103 let summary = nas.get_search_summary();
104 println!(
105 " - Total architectures evaluated: {}",
106 summary.total_architectures_evaluated
107 );
108 println!(" - Pareto front size: {}", summary.pareto_front_size);
109
110 Ok(())
111}Sourcepub fn get_pareto_front(&self) -> &[ArchitectureCandidate]
pub fn get_pareto_front(&self) -> &[ArchitectureCandidate]
Get Pareto front
Examples found in repository?
examples/quantum_nas.rs (line 264)
244fn multi_objective_demo() -> Result<()> {
245 let search_space = create_default_search_space();
246
247 let strategy = SearchStrategy::Evolutionary {
248 population_size: 30,
249 mutation_rate: 0.15,
250 crossover_rate: 0.8,
251 elitism_ratio: 0.2,
252 };
253
254 let mut nas = QuantumNAS::new(strategy, search_space);
255
256 println!(" Multi-objective optimization:");
257 println!(" - Optimizing accuracy vs. complexity");
258 println!(" - Finding Pareto-optimal architectures");
259
260 // Run search
261 nas.search(15)?;
262
263 // Analyze Pareto front
264 let pareto_front = nas.get_pareto_front();
265 println!(" Pareto front analysis:");
266 println!(" - Pareto-optimal architectures: {}", pareto_front.len());
267
268 for (i, arch) in pareto_front.iter().take(3).enumerate() {
269 println!(
270 " Architecture {}: {} params, {:.3} accuracy",
271 i + 1,
272 arch.metrics.parameter_count,
273 arch.metrics.accuracy.unwrap_or(0.0)
274 );
275 }
276
277 Ok(())
278}Auto Trait Implementations§
impl Freeze for QuantumNAS
impl RefUnwindSafe for QuantumNAS
impl Send for QuantumNAS
impl Sync for QuantumNAS
impl Unpin for QuantumNAS
impl UnwindSafe for QuantumNAS
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.