diff options
| author | hachem <im@hachem.wtf> | 2024-10-13 15:13:17 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2024-10-13 15:13:17 +0200 |
| commit | 7cc3c78a24b51a58d44e1baff20b86292662390e (patch) | |
| tree | ea7bcb1c6493287abc75f4df55458ed8f4abc1e5 /libpsi-core/src/core/circuit.rs | |
| parent | 00c4b7c44b1364381c65dccbb190d64b3ff4c1e8 (diff) | |
Mass refactor
Diffstat (limited to 'libpsi-core/src/core/circuit.rs')
| -rw-r--r-- | libpsi-core/src/core/circuit.rs | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/libpsi-core/src/core/circuit.rs b/libpsi-core/src/core/circuit.rs index 635066a..4d9d286 100644 --- a/libpsi-core/src/core/circuit.rs +++ b/libpsi-core/src/core/circuit.rs @@ -1,20 +1,19 @@ use super::{ClassicalRegister, QuantumGate, QuantumRegister}; #[derive(Clone)] -pub struct QuantumCircuitInstruction { - pub target_bit: usize, - pub control_indices: Vec<usize>, - pub gate: QuantumGate, +pub enum Instruction<'a> { + ApplyGate(&'a QuantumGate, &'a [usize], usize), + Measure(usize), } -pub struct QuantumCircuit { +pub struct QuantumCircuit<'a> { quantum_register: QuantumRegister, classical_register: ClassicalRegister, - instructions: Vec<QuantumCircuitInstruction>, + instructions: Vec<Instruction<'a>>, } -impl QuantumCircuit { - pub fn new(quantum_bit_count: usize, classical_bit_count: usize) -> QuantumCircuit { +impl<'a> QuantumCircuit<'a> { + pub fn new(quantum_bit_count: usize, classical_bit_count: usize) -> QuantumCircuit<'a> { QuantumCircuit { quantum_register: QuantumRegister::new(quantum_bit_count), classical_register: ClassicalRegister::new(classical_bit_count), @@ -22,12 +21,8 @@ impl QuantumCircuit { } } - pub fn apply(&mut self, gate: &QuantumGate, control_bits: &[usize], target_bit: usize) { - self.instructions.push(QuantumCircuitInstruction { - gate: gate.clone(), - target_bit, - control_indices: control_bits.to_vec(), - }); + pub fn execute(&mut self, instruction: Instruction<'a>) { + self.instructions.push(instruction); } pub fn get_quantum_register(&self) -> QuantumRegister { @@ -38,7 +33,7 @@ impl QuantumCircuit { self.classical_register.clone() } - pub fn get_instructions(&self) -> Vec<QuantumCircuitInstruction> { + pub fn get_instructions(&self) -> Vec<Instruction> { self.instructions.clone() } } |
