Skip to main content

quantrs2_sim/stabilizer/
stabilizersimulator_traits.rs

1//! # StabilizerSimulator - Trait Implementations
2//!
3//! This module contains trait implementations for `StabilizerSimulator`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Simulator`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use 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
19/// Implement the Simulator trait for `StabilizerSimulator`
20impl 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}