ppvm_stim (crate)
ppvm_stim¶
ppvm_stim
Parse and execute Stim circuits against a [`GeneralizedTableau`].
Two-stage pipeline:
- parse_extended — `&str` → [`ExtendedProgram`] (re-exported from `stim_parser`).
- execute / sample — call validate to validate the [`ExtendedProgram`], then apply it to a [`GeneralizedTableau`].
Multi-shot usage should call parse_extended once and pass the parsed program to sample. The run_string / run_file convenience helpers re-parse on every call and are intended for single-shot demos only.
Multi-shot pattern (recommended)
Section titled “Multi-shot pattern (recommended)”```ignore use ppvm_stim::{parse_extended, sample}; use ppvm_tableau::prelude::*;
let prog = parse_extended(circuit_src)?; let shots = sample(&prog, 10_000, || { GeneralizedTableau::<, usize, _>::new(n_qubits, 1e-10) })?;
Ok::<(), ppvm_stim::Error>(())
Section titled “Ok::<(), ppvm_stim::Error>(())”```
run_string / run_file re-parse on every call and exist only for single-shot demos — never call them from a shot loop.
Modules
classError¶source
ppvm_stim::Error
Bases: Debug, Error, Display, From<Diagnostics>, From<ExecError>
Rust enum.
pub enum ErrorVariants
| Name | Type | Description |
|---|---|---|
Parse | (Diagnostics) | A parse/validate/lower failure from `stim_parser`, reported as a [`Diagnostics`] aggregate. |
Exec | (ExecError) | |
Io | { ... } |
functionrun_file¶source
ppvm_stim::run_file
Signature
pub fn run_file<T, I, C>(path: &Path, tab: &mut GeneralizedTableau<T, I, C>) -> Result<Vec<Option<bool>>, Error>Parameters
| Name | Type | Description |
|---|---|---|
path | &Path | |
tab | &mut GeneralizedTableau<T, I, C> |
Returns
Result<Vec<Option<bool>>, Error>
functionrun_string¶source
ppvm_stim::run_string
Signature
pub fn run_string<T, I, C>(src: &str, tab: &mut GeneralizedTableau<T, I, C>) -> Result<Vec<Option<bool>>, Error>Parameters
| Name | Type | Description |
|---|---|---|
src | &str | |
tab | &mut GeneralizedTableau<T, I, C> |
Returns
Result<Vec<Option<bool>>, Error>
Parse → validate → execute in one shot. Re-parses each call; do not use in shot loops — use parse_extended + sample instead.
source