quil_rs/instruction/
measurement.rs

1use crate::quil::Quil;
2
3use super::{MemoryReference, Qubit};
4
5#[derive(Clone, Debug, PartialEq, Eq, Hash)]
6pub struct Measurement {
7    pub qubit: Qubit,
8    pub target: Option<MemoryReference>,
9}
10
11impl Measurement {
12    pub fn new(qubit: Qubit, target: Option<MemoryReference>) -> Self {
13        Self { qubit, target }
14    }
15}
16
17impl Quil for Measurement {
18    fn write(
19        &self,
20        writer: &mut impl std::fmt::Write,
21        fall_back_to_debug: bool,
22    ) -> Result<(), crate::quil::ToQuilError> {
23        write!(writer, "MEASURE ")?;
24        self.qubit.write(writer, fall_back_to_debug)?;
25        if let Some(target) = &self.target {
26            write!(writer, " ")?;
27            target.write(writer, fall_back_to_debug)?;
28        }
29
30        Ok(())
31    }
32}