Enum quil_rs::instruction::Instruction
source · pub enum Instruction {
Show 38 variants
Arithmetic(Arithmetic),
BinaryLogic(BinaryLogic),
CalibrationDefinition(Calibration),
Capture(Capture),
CircuitDefinition(CircuitDefinition),
Convert(Convert),
Comparison(Comparison),
Declaration(Declaration),
Delay(Delay),
Exchange(Exchange),
Fence(Fence),
FrameDefinition(FrameDefinition),
Gate(Gate),
GateDefinition(GateDefinition),
Halt,
Include(Include),
Jump(Jump),
JumpUnless(JumpUnless),
JumpWhen(JumpWhen),
Label(Label),
Load(Load),
MeasureCalibrationDefinition(MeasureCalibrationDefinition),
Measurement(Measurement),
Move(Move),
Nop,
Pragma(Pragma),
Pulse(Pulse),
RawCapture(RawCapture),
Reset(Reset),
SetFrequency(SetFrequency),
SetPhase(SetPhase),
SetScale(SetScale),
ShiftFrequency(ShiftFrequency),
ShiftPhase(ShiftPhase),
Store(Store),
SwapPhases(SwapPhases),
UnaryLogic(UnaryLogic),
WaveformDefinition(WaveformDefinition),
}
Variants§
Arithmetic(Arithmetic)
BinaryLogic(BinaryLogic)
CalibrationDefinition(Calibration)
Capture(Capture)
CircuitDefinition(CircuitDefinition)
Convert(Convert)
Comparison(Comparison)
Declaration(Declaration)
Delay(Delay)
Exchange(Exchange)
Fence(Fence)
FrameDefinition(FrameDefinition)
Gate(Gate)
GateDefinition(GateDefinition)
Halt
Include(Include)
Jump(Jump)
JumpUnless(JumpUnless)
JumpWhen(JumpWhen)
Label(Label)
Load(Load)
MeasureCalibrationDefinition(MeasureCalibrationDefinition)
Measurement(Measurement)
Move(Move)
Nop
Pragma(Pragma)
Pulse(Pulse)
RawCapture(RawCapture)
Reset(Reset)
SetFrequency(SetFrequency)
SetPhase(SetPhase)
SetScale(SetScale)
ShiftFrequency(ShiftFrequency)
ShiftPhase(ShiftPhase)
Store(Store)
SwapPhases(SwapPhases)
UnaryLogic(UnaryLogic)
WaveformDefinition(WaveformDefinition)
Implementations§
source§impl Instruction
impl Instruction
sourcepub fn apply_to_expressions(&mut self, closure: impl FnMut(&mut Expression))
pub fn apply_to_expressions(&mut self, closure: impl FnMut(&mut Expression))
Apply the provided closure to this instruction, mutating any Expression
s within.
Does not affect instructions without Expression
s within.
Does not traverse or mutate instructions nested within blocks (such as
within DEFCAL
).
Example
use std::mem::replace;
use std::str::FromStr;
use quil_rs::{expression::Expression, Program};
let program = Program::from_str("SHIFT-PHASE 0 \"rf\" 2*2").unwrap();
let mut instructions = program.to_instructions(true);
instructions.iter_mut().for_each(|inst| inst.apply_to_expressions(Expression::simplify));
assert_eq!(instructions[0].to_string(), String::from("SHIFT-PHASE 0 \"rf\" 4"))
source§impl Instruction
impl Instruction
sourcepub fn get_memory_accesses(&self) -> MemoryAccesses
pub fn get_memory_accesses(&self) -> MemoryAccesses
Return all memory accesses by the instruction - in expressions, captures, and memory manipulation
Trait Implementations§
source§impl Clone for Instruction
impl Clone for Instruction
source§fn clone(&self) -> Instruction
fn clone(&self) -> Instruction
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for Instruction
impl Debug for Instruction
source§impl Display for Instruction
impl Display for Instruction
source§impl From<&Instruction> for InstructionRole
impl From<&Instruction> for InstructionRole
source§fn from(instruction: &Instruction) -> Self
fn from(instruction: &Instruction) -> Self
Converts to this type from the input type.
source§impl PartialEq<Instruction> for Instruction
impl PartialEq<Instruction> for Instruction
source§fn eq(&self, other: &Instruction) -> bool
fn eq(&self, other: &Instruction) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for Instruction
Auto Trait Implementations§
impl RefUnwindSafe for Instruction
impl Send for Instruction
impl Sync for Instruction
impl Unpin for Instruction
impl UnwindSafe for Instruction
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more