struct CfgInfo {
pub cfg: DiGraphMap<BlockId, ()>,
pub cfg_no_be: DiGraphMap<BlockId, ()>,
pub loop_entries: HashSet<BlockId>,
pub backward_edges: HashSet<(BlockId, BlockId)>,
pub switch_blocks: HashSet<BlockId>,
pub only_reach_error: HashSet<BlockId>,
}
Expand description
This structure contains various information about a function’s CFG.
Fields§
§cfg: DiGraphMap<BlockId, ()>
The CFG
cfg_no_be: DiGraphMap<BlockId, ()>
The CFG where all the backward edges have been removed
loop_entries: HashSet<BlockId>
We consider the destination of the backward edges to be loop entries and store them here.
backward_edges: HashSet<(BlockId, BlockId)>
The backward edges
switch_blocks: HashSet<BlockId>
The blocks whose terminators are a switch are stored here.
only_reach_error: HashSet<BlockId>
The set of nodes from where we can only reach error nodes (panic, etc.)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CfgInfo
impl RefUnwindSafe for CfgInfo
impl Send for CfgInfo
impl Sync for CfgInfo
impl Unpin for CfgInfo
impl UnwindSafe for CfgInfo
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
Mutably borrows from an owned value. Read more
§impl<I, T> ExtractContext<I, ()> for T
impl<I, T> ExtractContext<I, ()> for T
§fn extract_context(self, _original_input: I)
fn extract_context(self, _original_input: I)
Given the context attached to a nom error, and given the original
input to the nom parser, extract more the useful context information. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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 more§impl<I> RecreateContext<I> for I
impl<I> RecreateContext<I> for I
§fn recreate_context(_original_input: I, tail: I) -> I
fn recreate_context(_original_input: I, tail: I) -> I
Given the original input, as well as the context reported by nom,
recreate a context in the original string where the error occurred. Read more