Skip to main content

Opcode

Enum Opcode 

Source
pub enum Opcode {
Show 22 variants Set { name: u32, value: u32, }, SetList { name: u32, start: u32, len: u16, }, Send { probe: u32, payload: Option<u32>, }, Match(u32), MatchAll { start: u32, len: u16, }, MatchAny { start: u32, len: u16, }, Assert(u32), Extract { name: u32, source: u32, }, IfMatch { matcher: u32, else_pc: Pc, }, ForList { item: u32, start: u32, len: u16, end_pc: Pc, }, ForVar { item: u32, list: u32, end_pc: Pc, }, LoopBack, Break, Save { from: u32, to: u32, }, Evidence(u32), Retry { probe: u32, count: u32, }, RetryDelay(u32), Sleep(u32), Stop, Fail, Continue, Exit,
}
Expand description

A single VM instruction. Operands are u32/u16 indices into the program’s pools (strings, matchers, extracts, evidence) or program counters (Pc) into code — never inline data.

Variants§

§

Set

Set a string variable: name and value index the string pool.

Fields

§name: u32

String-pool index of the variable name.

§value: u32

String-pool index of the value.

§

SetList

Set a list variable from len consecutive strings starting at start.

Fields

§name: u32

String-pool index of the variable name.

§start: u32

String-pool index of the first element.

§len: u16

Number of elements.

§

Send

Perform a probe’s request. payload, if set, overrides the probe’s payload (string-pool or payload-pool index, per probe kind).

Fields

§probe: u32

String-pool index of the probe name.

§payload: Option<u32>

Optional payload-override index.

§

Match(u32)

Evaluate one matcher (matcher-pool index); on failure, latch the match chain false.

§

MatchAll

Evaluate len matchers starting at start; all must pass.

Fields

§start: u32

Matcher-pool index of the first matcher.

§len: u16

Number of matchers.

§

MatchAny

Evaluate len matchers starting at start; any one passing succeeds.

Fields

§start: u32

Matcher-pool index of the first matcher.

§len: u16

Number of matchers.

§

Assert(u32)

Like Match, but a failure aborts the run with an error.

§

Extract

Extract a value into a variable. name is a string-pool index; source indexes the extract pool.

Fields

§name: u32

String-pool index of the destination variable name.

§source: u32

Extract-pool index of the source rule.

§

IfMatch

If the matcher holds, fall through; otherwise jump to else_pc.

Fields

§matcher: u32

Matcher-pool index of the condition.

§else_pc: Pc

Program counter to jump to when the condition is false.

§

ForList

Begin a for over a literal list (len strings from start), binding each to item. end_pc is the instruction after the loop.

Fields

§item: u32

String-pool index of the loop variable name.

§start: u32

String-pool index of the first value.

§len: u16

Number of values.

§end_pc: Pc

Program counter just past the loop.

§

ForVar

Begin a for over a list variable (list), binding each to item.

Fields

§item: u32

String-pool index of the loop variable name.

§list: u32

String-pool index of the list variable name.

§end_pc: Pc

Program counter just past the loop.

§

LoopBack

End-of-loop-body marker: advance the loop or exit it.

§

Break

Exit the innermost loop.

§

Save

Snapshot a probe’s response under another name (from/to index the string pool).

Fields

§from: u32

String-pool index of the source probe name.

§to: u32

String-pool index of the destination name.

§

Evidence(u32)

Attach evidence (evidence-pool index) when the match chain is true.

§

Retry

Re-send a probe up to count times, stopping on first success.

Fields

§probe: u32

String-pool index of the probe name.

§count: u32

Maximum attempts.

§

RetryDelay(u32)

Set the delay between Retry attempts (string-pool index of a duration).

§

Sleep(u32)

Sleep for a duration (string-pool index of a duration literal).

§

Stop

Stop the run, emitting no finding.

§

Fail

Abort the run with an error.

§

Continue

Skip to the next iteration of the innermost loop.

§

Exit

Stop the run, emitting the finding if the match chain held.

Trait Implementations§

Source§

impl Clone for Instr

Source§

fn clone(&self) -> Instr

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Instr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Instr

Source§

fn eq(&self, other: &Instr) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Instr

Auto Trait Implementations§

§

impl Freeze for Instr

§

impl RefUnwindSafe for Instr

§

impl Send for Instr

§

impl Sync for Instr

§

impl Unpin for Instr

§

impl UnsafeUnpin for Instr

§

impl UnwindSafe for Instr

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more