pub struct StackOutputs { /* private fields */ }Expand description
Output container for Miden VM programs.
Miden program outputs contain the full state of the stack at the end of execution.
stack is expected to be ordered as if the elements were popped off the stack one by one.
Thus, the value at the top of the stack is expected to be in the first position, and the order
of the rest of the output elements will also match the order on the stack.
Implementations§
Source§impl StackOutputs
impl StackOutputs
Sourcepub fn new(stack: Vec<BaseElement>) -> Result<StackOutputs, OutputError>
pub fn new(stack: Vec<BaseElement>) -> Result<StackOutputs, OutputError>
Constructs a new StackOutputs struct from the provided stack elements.
§Errors
Returns an error if the number of stack elements is greater than MIN_STACK_DEPTH (16).
Sourcepub fn try_from_ints<I>(iter: I) -> Result<StackOutputs, OutputError>where
I: IntoIterator<Item = u64>,
pub fn try_from_ints<I>(iter: I) -> Result<StackOutputs, OutputError>where
I: IntoIterator<Item = u64>,
Attempts to create StackOutputs struct from the provided stack elements represented as
vector of u64 values.
§Errors
Returns an error if:
- Any of the provided stack elements are invalid field elements.
Sourcepub fn get_stack_item(&self, idx: usize) -> Option<BaseElement>
pub fn get_stack_item(&self, idx: usize) -> Option<BaseElement>
Returns the element located at the specified position on the stack or None if out of
bounds.
Sourcepub fn get_stack_word_be(&self, idx: usize) -> Option<Word>
pub fn get_stack_word_be(&self, idx: usize) -> Option<Word>
Returns the word located starting at the specified Felt position on the stack in big-endian
(reversed) order, or None if out of bounds.
For example, passing in 0 returns the word at the top of the stack, and passing in 4
returns the word starting at element index 4.
In big-endian order, stack element N+3 will be at position 0 of the word, N+2 at
position 1, N+1 at position 2, and N at position 3. This matches the behavior of
mem_loadw_be where mem[a+3] ends up on top of the stack.
Sourcepub fn get_stack_word_le(&self, idx: usize) -> Option<Word>
pub fn get_stack_word_le(&self, idx: usize) -> Option<Word>
Returns the word located starting at the specified Felt position on the stack in
little-endian (memory) order, or None if out of bounds.
For example, passing in 0 returns the word at the top of the stack, and passing in 4
returns the word starting at element index 4.
In little-endian order, stack element N will be at position 0 of the word, N+1 at
position 1, N+2 at position 2, and N+3 at position 3. This matches the behavior of
mem_loadw_le where mem[a] ends up on top of the stack.
Sourcepub fn get_stack_word(&self, idx: usize) -> Option<Word>
👎Deprecated since 0.19.0: Use get_stack_word_be() or get_stack_word_le() to make endianness explicit
pub fn get_stack_word(&self, idx: usize) -> Option<Word>
get_stack_word_be() or get_stack_word_le() to make endianness explicitReturns the word located starting at the specified Felt position on the stack or None if
out of bounds.
This is an alias for Self::get_stack_word_be for backward compatibility. For new code,
prefer using the explicit get_stack_word_be() or get_stack_word_le() to make the
ordering expectations clear.
See Self::get_stack_word_be for detailed documentation.
Sourcepub fn stack_truncated(&self, num_outputs: usize) -> &[BaseElement]
pub fn stack_truncated(&self, num_outputs: usize) -> &[BaseElement]
Returns the number of requested stack outputs or returns the full stack if fewer than the requested number of stack values exist.
Sourcepub fn stack_mut(&mut self) -> &mut [BaseElement]
pub fn stack_mut(&mut self) -> &mut [BaseElement]
Returns mutable access to the stack outputs, to be used for testing or running examples.
Sourcepub fn as_int_vec(&self) -> Vec<u64>
pub fn as_int_vec(&self) -> Vec<u64>
Converts the StackOutputs into the vector of u64 values.
Trait Implementations§
Source§impl Clone for StackOutputs
impl Clone for StackOutputs
Source§fn clone(&self) -> StackOutputs
fn clone(&self) -> StackOutputs
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StackOutputs
impl Debug for StackOutputs
Source§impl Default for StackOutputs
impl Default for StackOutputs
Source§fn default() -> StackOutputs
fn default() -> StackOutputs
Source§impl Deref for StackOutputs
impl Deref for StackOutputs
Source§impl Deserializable for StackOutputs
impl Deserializable for StackOutputs
Source§fn read_from<R>(source: &mut R) -> Result<StackOutputs, DeserializationError>where
R: ByteReader,
fn read_from<R>(source: &mut R) -> Result<StackOutputs, DeserializationError>where
R: ByteReader,
source, attempts to deserialize these bytes
into Self, and returns the result. Read moreSource§fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
Source§impl From<[BaseElement; 16]> for StackOutputs
impl From<[BaseElement; 16]> for StackOutputs
Source§fn from(value: [BaseElement; 16]) -> StackOutputs
fn from(value: [BaseElement; 16]) -> StackOutputs
Source§impl PartialEq for StackOutputs
impl PartialEq for StackOutputs
Source§impl Serializable for StackOutputs
impl Serializable for StackOutputs
Source§fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
self into bytes and writes these bytes into the target.Source§fn get_size_hint(&self) -> usize
fn get_size_hint(&self) -> usize
impl Eq for StackOutputs
impl StructuralPartialEq for StackOutputs
Auto Trait Implementations§
impl Freeze for StackOutputs
impl RefUnwindSafe for StackOutputs
impl Send for StackOutputs
impl Sync for StackOutputs
impl Unpin for StackOutputs
impl UnwindSafe for StackOutputs
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more