pub struct Loop { /* private fields */ }
Expand description

A code block used to describe condition-based iterative execution.

When the VM encounters a Loop block, executes the loop’s body if the top of the stack is 1, and skips the block if the top of the stack is 0. If the top of the stack is neither 0 nor 1, the program fails. Once the loop body is fully executed, the VM checks the top of the stack again. If the top of the stack is 1, the loop is executed again, if it is 0, the VM stops executing the loop and moves to the next block. Thus, the body of the loop is executed while the top of the stack remains 1 at the end of each loop iteration.

Hash of a Loop block is computed by hashing a concatenation of the loop’s body hash with zero.

Implementations§

source§

impl Loop

source

pub const DOMAIN: Felt = _

The domain of the loop block (used for control block hashing).

source

pub fn new(body: CodeBlock) -> Self

Returns a new Loop bock instantiated with the specified body.

source

pub fn hash(&self) -> Digest

Returns a hash of this code block.

source

pub fn body(&self) -> &CodeBlock

Returns a reference to the code block which represents the body of the loop.

Trait Implementations§

source§

impl Clone for Loop

source§

fn clone(&self) -> Loop

Returns a copy 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 Loop

source§

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

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

impl Display for Loop

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Loop

§

impl Send for Loop

§

impl Sync for Loop

§

impl Unpin for Loop

§

impl UnwindSafe for Loop

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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.

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.