Skip to main content

HasOperandStack

Trait HasOperandStack 

Source
pub trait HasOperandStack<I> {
    type Source;

    // Required method
    fn operand_stack(&mut self, arity: usize) -> &mut Self::Source;
}
Expand description

Framework wiring from composite instruction preparation to operand storage.

A composite with a #[program] device supplies this connection automatically. Ordinary component/composite authors select PopFromStack and PushToStack types; they do not implement stack storage or transfer logic.

Opting into this capability selects the global tuple crate::BuildMessage implementations for compatible child message types. A field name or merely containing an ExecutionState does not establish the capability. Custom preparation can use a distinct message type with its own builder.

No canonical-Boolean validation policy is needed: StackValue Boolean extraction interprets every nonzero word as true.

Required Associated Types§

Source

type Source

The checked operand source used for this instruction.

Required Methods§

Source

fn operand_stack(&mut self, arity: usize) -> &mut Self::Source

Borrow the operand source for the supplied operand count.

The arity allows a later cached implementation to prepare storage once. This accessor must not consume operands, bulk-precheck their availability, or otherwise change the sequential partial-consumption semantics. Empty tuple and immediate empty batch builders do not invoke it.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§