pub struct StructuredBlock {
    pub initial_refs: Vec<VariableId>,
    pub inputs: Vec<VariableId>,
    pub statements: Vec<StructuredStatement>,
    pub end: StructuredBlockEnd,
}
Expand description

A block of statements. Each block gets inputs and outputs, and is composed of a linear sequence of statements.

A block may end with a return, which exits the current function.

A block contains the list of variables to be dropped at its end. Other than these variables and the output variables, it is guaranteed that no other variable is alive.

Fields§

§initial_refs: Vec<VariableId>

The variable ids bound to the ref variables (including implicits) at the beginning of the block.

§inputs: Vec<VariableId>

Input variables to the block, including implicits.

§statements: Vec<StructuredStatement>

Statements sequence running one after the other in the block, in a linear flow. Note: Inner blocks might end with a return, which will exit the function in the middle. Note: Match is a possible statement, which means it has control flow logic inside, but after its execution is completed, the flow returns to the following statement of the block.

§end: StructuredBlockEnd

Describes how this block ends: returns to the caller or exits the function.

Trait Implementations§

source§

impl Clone for StructuredBlock

source§

fn clone(&self) -> StructuredBlock

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 StructuredBlock

source§

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

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

impl DebugWithDb<LoweredFormatter<'_>> for StructuredBlock

source§

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

source§

fn debug<'me, 'db>(&'me self, db: &'me Db) -> DebugWith<'me, Db>where Self: Sized + 'me,

source§

fn into_debug<'me, 'db>(self, db: &'me Db) -> DebugWith<'me, Db>where Self: Sized + 'me,

source§

impl PartialEq<StructuredBlock> for StructuredBlock

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<StructuredBlock> for FlatBlock

§

type Error = ()

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

fn try_from(value: StructuredBlock) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for StructuredBlock

source§

impl StructuralEq for StructuredBlock

source§

impl StructuralPartialEq for StructuredBlock

Auto Trait Implementations§

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<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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, 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.
source§

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

source§

fn upcast(&self) -> &T