quantrs2_sim/stabilizer/
stabilizersimulator_traits.rs1use crate::simulator::{Simulator, SimulatorResult};
12use quantrs2_circuit::prelude::*;
13use quantrs2_core::prelude::*;
14use scirs2_core::random::prelude::*;
15
16use super::functions::gate_to_stabilizer;
17use super::types::StabilizerSimulator;
18
19impl Simulator for StabilizerSimulator {
21 fn run<const N: usize>(
22 &mut self,
23 circuit: &Circuit<N>,
24 ) -> crate::error::Result<SimulatorResult<N>> {
25 let mut sim = Self::new(N);
26 for gate in circuit.gates() {
27 if let Some(stab_gate) = gate_to_stabilizer(gate) {
28 let _ = sim.apply_gate(stab_gate);
29 }
30 }
31 let amplitudes = sim.get_statevector();
32 Ok(SimulatorResult::new(amplitudes))
33 }
34}