q-rust 0.1.1

A modular quantum transpiler and QASM 2.0 parser written in Rust.
Documentation
#[cfg(test)]
mod tests {
    use q_rust::ir::{GateType, Operation};
    use q_rust::parser::parse_qasm;

    #[test]
    fn test_simple_circuit() {
        let qasm = r#"
            OPENQASM 2.0;
            include "qelib1.inc";
            qreg q[2];
            creg c[2];
            h q[0];
            cx q[0], q[1];
            measure q[0] -> c[0];
            measure q[1] -> c[1];
        "#;

        let circuit = parse_qasm(qasm).expect("Failed to parse QASM");

        assert_eq!(circuit.num_qubits, 2);
        assert_eq!(circuit.num_cbits, 2);
        assert_eq!(circuit.operations.len(), 4);

        match &circuit.operations[0] {
            Operation::Gate { name, qubits, .. } => {
                assert_eq!(*name, GateType::H);
                assert_eq!(*qubits, vec![0]);
            }
            _ => panic!("Expected H gate"),
        }

        match &circuit.operations[1] {
            Operation::Gate { name, qubits, .. } => {
                assert_eq!(*name, GateType::CX);
                assert_eq!(*qubits, vec![0, 1]);
            }
            _ => panic!("Expected CX gate"),
        }
    }
}