Struct ra_ap_rustc_data_structures::graph::scc::Sccs
source · pub struct Sccs<N: Idx, S: Idx> { /* private fields */ }
Expand description
Strongly connected components (SCC) of a graph. The type N
is
the index type for the graph nodes and S
is the index type for
the SCCs. We can map from each node to the SCC that it
participates in, and we also have the successors of each SCC.
Implementations§
source§impl<N: Idx, S: Idx + Ord> Sccs<N, S>
impl<N: Idx, S: Idx + Ord> Sccs<N, S>
pub fn new( graph: &(impl DirectedGraph<Node = N> + WithNumNodes + WithSuccessors) ) -> Self
pub fn scc_indices(&self) -> &IndexSlice<N, S>
pub fn scc_data(&self) -> &SccData<S>
sourcepub fn all_sccs(&self) -> impl Iterator<Item = S>
pub fn all_sccs(&self) -> impl Iterator<Item = S>
Returns an iterator over the SCCs in the graph.
The SCCs will be iterated in dependency order (or post order),
meaning that if S1 -> S2
, we will visit S2
first and S1
after.
This is convenient when the edges represent dependencies: when you visit
S1
, the value for S2
will already have been computed.
sourcepub fn successors(&self, scc: S) -> &[S]
pub fn successors(&self, scc: S) -> &[S]
Returns the successors of the given SCC.
Trait Implementations§
source§impl<N: Idx, S: Idx + Ord> WithSuccessors for Sccs<N, S>
impl<N: Idx, S: Idx + Ord> WithSuccessors for Sccs<N, S>
fn successors(&self, node: S) -> <Self as GraphSuccessors<'_>>::Iter
fn depth_first_search(&self, from: Self::Node) -> DepthFirstSearch<'_, Self> ⓘwhere
Self: WithNumNodes,
Auto Trait Implementations§
impl<N, S> RefUnwindSafe for Sccs<N, S>where
S: RefUnwindSafe,
impl<N, S> Send for Sccs<N, S>where
S: Send,
impl<N, S> Sync for Sccs<N, S>where
S: Sync,
impl<N, S> Unpin for Sccs<N, S>where
S: Unpin,
impl<N, S> UnwindSafe for Sccs<N, S>where
S: UnwindSafe,
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