pub enum Instruction {
Show 40 variants
Arithmetic(Arithmetic),
BinaryLogic(BinaryLogic),
CalibrationDefinition(Calibration),
Call(Call),
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),
Wait,
}
Variants§
Arithmetic(Arithmetic)
BinaryLogic(BinaryLogic)
CalibrationDefinition(Calibration)
Call(Call)
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)
Wait
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, quil::Quil};
let program = Program::from_str("SHIFT-PHASE 0 \"rf\" 2*2").unwrap();
let mut instructions = program.to_instructions();
instructions.iter_mut().for_each(|inst| inst.apply_to_expressions(Expression::simplify));
assert_eq!(instructions[0].to_quil().unwrap(), String::from("SHIFT-PHASE 0 \"rf\" 4"))
Sourcepub fn get_qubits(&self) -> Vec<&Qubit>
pub fn get_qubits(&self) -> Vec<&Qubit>
Return immutable references to the Qubit
s contained within an instruction
Sourcepub fn get_qubits_mut(&mut self) -> Vec<&mut Qubit>
pub fn get_qubits_mut(&mut self) -> Vec<&mut Qubit>
Return mutable references to the Qubit
s contained within an instruction
Sourcepub fn is_scheduled(&self) -> bool
pub fn is_scheduled(&self) -> bool
Per the Quil-T spec, whether this instruction’s timing within the pulse program must be precisely controlled so as to begin exactly on the end of the latest preceding timed instruction
Source§impl Instruction
impl Instruction
Sourcepub fn get_memory_accesses(
&self,
extern_signature_map: &ExternSignatureMap,
) -> MemoryAccessesResult
pub fn get_memory_accesses( &self, extern_signature_map: &ExternSignatureMap, ) -> MemoryAccessesResult
Return all memory accesses by the instruction - in expressions, captures, and memory manipulation.
This will fail if the program contains Instruction::Call
instructions that cannot
be resolved against a signature in the provided ExternSignatureMap
(either because
they call functions that don’t appear in the map or because the types of the parameters
are wrong).
Trait Implementations§
Source§impl Clone for Instruction
impl Clone for Instruction
Source§fn clone(&self) -> Instruction
fn clone(&self) -> Instruction
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Instruction
impl Debug for Instruction
Source§impl From<&Instruction> for InstructionRole
impl From<&Instruction> for InstructionRole
Source§fn from(instruction: &Instruction) -> Self
fn from(instruction: &Instruction) -> Self
Source§impl FromStr for Instruction
impl FromStr for Instruction
Source§impl PartialEq for Instruction
impl PartialEq for Instruction
Source§impl Quil for Instruction
impl Quil for Instruction
Source§fn write(
&self,
f: &mut impl Write,
fall_back_to_debug: bool,
) -> Result<(), ToQuilError>
fn write( &self, f: &mut impl Write, fall_back_to_debug: bool, ) -> Result<(), ToQuilError>
fall_back_to_debug
is true
, then it must not return an error.Source§fn to_quil(&self) -> Result<String, ToQuilError>
fn to_quil(&self) -> Result<String, ToQuilError>
Source§fn to_quil_or_debug(&self) -> String
fn to_quil_or_debug(&self) -> String
Debug
representation of that
component.impl StructuralPartialEq for Instruction
Auto Trait Implementations§
impl Freeze for Instruction
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.