diff options
| author | hachem <im@hachem.wtf> | 2024-10-18 09:34:36 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2024-10-18 09:34:36 +0200 |
| commit | 5f058c9b67e0f96e0dd89bbeff0afe8e08bde25b (patch) | |
| tree | 7546702edc4d6e2c66c1440753c31387b38dea9f /libpsi-core/src/core/circuit.rs | |
| parent | 7cc3c78a24b51a58d44e1baff20b86292662390e (diff) | |
Allow named registers and tiny refactor
Diffstat (limited to 'libpsi-core/src/core/circuit.rs')
| -rw-r--r-- | libpsi-core/src/core/circuit.rs | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/libpsi-core/src/core/circuit.rs b/libpsi-core/src/core/circuit.rs index 4d9d286..27c106d 100644 --- a/libpsi-core/src/core/circuit.rs +++ b/libpsi-core/src/core/circuit.rs @@ -1,39 +1,19 @@ -use super::{ClassicalRegister, QuantumGate, QuantumRegister}; - -#[derive(Clone)] -pub enum Instruction<'a> { - ApplyGate(&'a QuantumGate, &'a [usize], usize), - Measure(usize), -} +use super::{ClassicalRegister, QuantumRegister}; +#[allow(unused)] pub struct QuantumCircuit<'a> { - quantum_register: QuantumRegister, - classical_register: ClassicalRegister, - instructions: Vec<Instruction<'a>>, + quantum_registers: &'a [QuantumRegister<'a>], + classical_registers: &'a [ClassicalRegister<'a>], } impl<'a> QuantumCircuit<'a> { - pub fn new(quantum_bit_count: usize, classical_bit_count: usize) -> QuantumCircuit<'a> { + pub fn new( + quantum_registers: &'a [QuantumRegister<'a>], + classical_registers: &'a [ClassicalRegister<'a>], + ) -> QuantumCircuit<'a> { QuantumCircuit { - quantum_register: QuantumRegister::new(quantum_bit_count), - classical_register: ClassicalRegister::new(classical_bit_count), - instructions: Vec::new(), + quantum_registers, + classical_registers, } } - - pub fn execute(&mut self, instruction: Instruction<'a>) { - self.instructions.push(instruction); - } - - pub fn get_quantum_register(&self) -> QuantumRegister { - self.quantum_register.clone() - } - - pub fn get_classical_registers(&self) -> ClassicalRegister { - self.classical_register.clone() - } - - pub fn get_instructions(&self) -> Vec<Instruction> { - self.instructions.clone() - } } |
