aboutsummaryrefslogtreecommitdiff
path: root/libpsi-core/src/core/circuit.rs
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2024-09-27 16:26:14 +0200
committerhachem <im@hachem.wtf>2024-09-27 16:26:14 +0200
commit82e938a96cc6b38ac1a75215cae56f100d1e7bb8 (patch)
treee7d1536731e607ac5cf2c7675817d1bd2986764b /libpsi-core/src/core/circuit.rs
parent1070a7ee073471af8442826cec54e720be266c7c (diff)
BasicRT first implementation
Diffstat (limited to 'libpsi-core/src/core/circuit.rs')
-rw-r--r--libpsi-core/src/core/circuit.rs25
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()
+ }
}