use quest_bind::{
QuestEnv,
QuestError,
Qureg,
};
fn main() -> Result<(), QuestError> {
let env = &QuestEnv::new();
env.report_quest_env();
let mut qureg = Qureg::try_new(2, env).expect("cannot allocate new Qureg");
qureg.report_qureg_params();
qureg.init_zero_state();
qureg.report_state_to_screen(0);
println!("---\nPrepare Bell state: |00> + |11>");
qureg.hadamard(0).and(qureg.controlled_not(0, 1))?;
let outcome0 = qureg.measure(0)?;
let outcome1 = qureg.measure(1)?;
println!("Qubit \"0\" measured in state: |{outcome0}>");
println!("Qubit \"1\" measured in state: |{outcome1}>");
if outcome0 == outcome1 {
println!("They match!");
Ok(())
} else {
panic!("qubits in Bell state should be perfectly correlated");
}
}