struct SccDetector {
successors: Vec<Vec<BasicBlock>>,
components: Vec<Vec<usize>>,
}Expand description
Adapter that lets the shared SCC utility run over a MIR CFG.
Fields§
§successors: Vec<Vec<BasicBlock>>§components: Vec<Vec<usize>>Implementations§
Trait Implementations§
Source§impl Scc for SccDetector
impl Scc for SccDetector
Source§fn on_scc_found(&mut self, _root: usize, scc_components: &[usize])
fn on_scc_found(&mut self, _root: usize, scc_components: &[usize])
Store every SCC discovered by the shared Tarjan utility.
Source§fn get_next(&mut self, root: usize) -> FxHashSet<usize>
fn get_next(&mut self, root: usize) -> FxHashSet<usize>
Return outgoing successor indices for the SCC traversal.
Source§fn find_scc_from(&mut self, start: usize)
fn find_scc_from(&mut self, start: usize)
Run SCC discovery from a specific start node.
Auto Trait Implementations§
impl Freeze for SccDetector
impl RefUnwindSafe for SccDetector
impl Send for SccDetector
impl Sync for SccDetector
impl Unpin for SccDetector
impl UnwindSafe for SccDetector
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
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