Enum quil_rs::instruction::Instruction
source · pub enum Instruction {
Show 39 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),
Wait,
}
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)
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) -> 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 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 FromStr for Instruction
impl FromStr for Instruction
source§impl PartialEq for Instruction
impl PartialEq 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 ==
.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>
Write the Quil representation of the item to the given writer. If
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>
Return a string in valid Quil syntax or an error if the item cannot be represented with valid Quil.
source§fn to_quil_or_debug(&self) -> String
fn to_quil_or_debug(&self) -> String
Return a string in valid Quil syntax if possible. Any individual component of this object
which cannot be represented in Quil will be replaced with a
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.