Enum spirt::cfg::LazyCond

source ·
enum LazyCond {
    False,
    True,
    MergeSelect {
        control_node: ControlNode,
        per_case_conds: Vec<LazyCond>,
    },
}
Expand description

A recipe for computing a control-flow-sensitive (boolean) condition Value, potentially requiring merging through an arbitrary number of Selects (via per-case outputs and Value::ControlNodeOutput, for each Select).

This should largely be equivalent to eagerly generating all region outputs that might be needed, and then removing the unused ones, but this way we never generate unused outputs, and can potentially even optimize away some redundant dataflow (e.g. if cond { true } else { false } is just cond).

Variants§

§

False

§

True

§

MergeSelect

Fields

§control_node: ControlNode
§per_case_conds: Vec<LazyCond>

Auto Trait Implementations§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

source§

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

§

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>,

§

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.