Skip to main content

Module ir

Module ir 

Source
Expand description

§Quantum Circuit Intermediate Representation (IR)

This module provides parsers and serializers for various quantum circuit formats, enabling interoperability between Cqlib and other quantum computing tools.

§Supported Formats

FormatDescriptionLoad ModuleDump Module
OpenQASM 2.0IBM’s quantum assembly language[qasm2::load][qasm2::dump]
OpenQASM 3.0OpenQASM 3 circuit language[qasm3::load][qasm3::dump]
QCISTelecom Quantum’s intermediate format[qcis::load][qcis::dump]

§Error Types

Each format keeps concrete error types so callers can match format-specific failures without downcasting:

File-based entry points preserve the original I/O error through std::error::Error::source. The crate does not currently expose a shared Format trait or umbrella IR error enum; use the explicit per-format modules or crate-root aliases below.

§Quick Start

§Loading from OpenQASM

use cqlib_core::ir::qasm2_loads;

let qasm = r#"
    OPENQASM 2.0;
    include "qelib1.inc";
    qreg q[2];
    h q[0];
    cx q[0], q[1];
"#;

let circuit = qasm2_loads(qasm).unwrap();

§Loading from QCIS

use cqlib_core::ir::qcis_loads;

let qcis = r#"
H Q0
CZ Q0 Q1
M Q0 Q1
"#;

let circuit = qcis_loads(qcis).unwrap();

§Dumping to Format

use cqlib_core::circuit::{Circuit, Qubit};
use cqlib_core::ir::{qasm2_dumps, qasm3_dumps, qcis_dumps};

let mut circuit = Circuit::new(2);
circuit.h(Qubit::new(0)).unwrap();
circuit.cz(Qubit::new(0), Qubit::new(1)).unwrap();

let qasm = qasm2_dumps(&circuit).unwrap();
let qasm3 = qasm3_dumps(&circuit).unwrap();
let qcis = qcis_dumps(&circuit).unwrap();

Re-exports§

pub use qasm2::dump::dump as qasm2_dump;
pub use qasm2::dump::dumps as qasm2_dumps;
pub use qasm2::load::load as qasm2_load;
pub use qasm2::load::loads as qasm2_loads;
pub use qasm3::dump::dump as qasm3_dump;
pub use qasm3::dump::dumps as qasm3_dumps;
pub use qasm3::load::load as qasm3_load;
pub use qasm3::load::loads as qasm3_loads;
pub use qcis::dump::dump as qcis_dump;
pub use qcis::dump::dumps as qcis_dumps;
pub use qcis::load::load as qcis_load;
pub use qcis::load::loads as qcis_loads;

Modules§

qasm2
OpenQASM 2.0
qasm3
OpenQASM 3 import and export support.
qcis
QCIS Parser and Serializer