diff options
| author | hachem <im@hachem.wtf> | 2024-09-27 16:26:14 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2024-09-27 16:26:14 +0200 |
| commit | 82e938a96cc6b38ac1a75215cae56f100d1e7bb8 (patch) | |
| tree | e7d1536731e607ac5cf2c7675817d1bd2986764b /libpsi-core/src/core/circuit.rs | |
| parent | 1070a7ee073471af8442826cec54e720be266c7c (diff) | |
BasicRT first implementation
Diffstat (limited to 'libpsi-core/src/core/circuit.rs')
| -rw-r--r-- | libpsi-core/src/core/circuit.rs | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/libpsi-core/src/core/circuit.rs b/libpsi-core/src/core/circuit.rs index 43f51d0..183c4a2 100644 --- a/libpsi-core/src/core/circuit.rs +++ b/libpsi-core/src/core/circuit.rs @@ -1,13 +1,12 @@ use super::{ClassicalRegister, QuantumBit, QuantumGate}; -#[allow(dead_code)] -struct QuantumCircuitInstruction { - target_indices: Vec<usize>, - control_indices: Vec<usize>, - gate: QuantumGate, +#[derive(Clone)] +pub struct QuantumCircuitInstruction { + pub target_indices: Vec<usize>, + pub control_indices: Vec<usize>, + pub gate: QuantumGate, } -#[allow(dead_code)] pub struct QuantumCircuit { quantum_bits: Vec<QuantumBit>, classical_register: ClassicalRegister, @@ -17,7 +16,7 @@ pub struct QuantumCircuit { impl QuantumCircuit { pub fn new(quantum_bit_count: usize, classical_bit_count: usize) -> QuantumCircuit { QuantumCircuit { - quantum_bits: Vec::with_capacity(quantum_bit_count), + quantum_bits: vec![QuantumBit::state_0(); quantum_bit_count], classical_register: ClassicalRegister::new(classical_bit_count), instructions: Vec::new(), } @@ -30,4 +29,16 @@ impl QuantumCircuit { control_indices: control_bits.to_vec(), }); } + + pub fn get_quantum_bits(&self) -> Vec<QuantumBit> { + self.quantum_bits.clone() + } + + pub fn get_classical_registers(&self) -> ClassicalRegister { + self.classical_register.clone() + } + + pub fn get_instructions(&self) -> Vec<QuantumCircuitInstruction> { + self.instructions.clone() + } } |
