quil_rs/instruction/
measurement.rs1use 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}