enum StructurizeRegionState {
    InProgress,
    Ready {
        backedge: Option<DeferredEdgeBundle<()>>,
        region: PartialControlRegion,
    },
    Claimed,
}
Expand description

The state of one structurize_region_from invocation (keyed on its start ControlRegion in Structurizer) and its PartialControlRegion output.

There is a fourth (or 0th) implicit state, which is where nothing has yet observed some region, and Structurizer isn’t tracking it at all.

Variants§

§

InProgress

Structurization is still running, and observing this is a cycle.

§

Ready

Fields

§backedge: Option<DeferredEdgeBundle<()>>

If this region had backedges (targeting its start ControlRegion), their bundle is taken from the region’s DeferredEdgeBundleSet, and kept in this field instead (for simpler/faster access).

Claiming a region with backedges can combine them with the bundled edges coming into the CFG cycle from outside, and instead of failing due to the latter not being enough to claim the region on their own, actually perform loop structurization.

Structurization completed, and this region can now be claimed.

§

Claimed

Region was claimed (by an IncomingEdgeBundle, with the appropriate total IncomingEdgeCount, minus any consumed_backedges), and has since likely been incorporated as part of some larger region.

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.