quantrs2_ml/utils/
types.rs

1//! Auto-generated module
2//!
3//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
4
5/// Simplified variational circuit for internal use
6/// This is used by lstm, attention, and gnn modules for building quantum circuits
7#[derive(Debug, Clone)]
8pub struct VariationalCircuit {
9    /// Number of qubits
10    pub num_qubits: usize,
11    /// Gates and parameters
12    pub gates: Vec<(String, Vec<usize>, Vec<String>)>,
13}
14impl VariationalCircuit {
15    /// Create a new variational circuit
16    pub fn new(num_qubits: usize) -> Self {
17        Self {
18            num_qubits,
19            gates: Vec::new(),
20        }
21    }
22    /// Add a gate to the circuit
23    pub fn add_gate(&mut self, gate_name: &str, qubits: Vec<usize>, params: Vec<String>) {
24        self.gates.push((gate_name.to_string(), qubits, params));
25    }
26    /// Get number of parameters
27    pub fn num_parameters(&self) -> usize {
28        self.gates.iter().map(|(_, _, params)| params.len()).sum()
29    }
30}