Struct rustc_data_structures::graph::scc::SccData
source · struct SccData<S: Idx, A: Annotation> {
scc_details: IndexVec<S, SccDetails<A>>,
all_successors: Vec<S>,
}
Fields§
§scc_details: IndexVec<S, SccDetails<A>>
Maps SCC indices to their metadata, including
offsets into all_successors
.
all_successors: Vec<S>
Contains the successors for all the Sccs, concatenated. The
range of indices corresponding to a given SCC is found in its
scc_details.range
.
Implementations§
source§impl<S: Idx, A: Annotation> SccData<S, A>
impl<S: Idx, A: Annotation> SccData<S, A>
sourcefn successors(&self, scc: S) -> &[S]
fn successors(&self, scc: S) -> &[S]
Returns the successors of the given SCC.
sourcefn create_scc(
&mut self,
successors: impl IntoIterator<Item = S>,
annotation: A,
) -> S
fn create_scc( &mut self, successors: impl IntoIterator<Item = S>, annotation: A, ) -> S
Creates a new SCC with successors
as its successors and
the maximum weight of its internal nodes scc_max_weight
and
returns the resulting index.
fn annotation(&self, scc: S) -> A
Auto Trait Implementations§
impl<S, A> DynSend for SccData<S, A>
impl<S, A> DynSync for SccData<S, A>
impl<S, A> Freeze for SccData<S, A>
impl<S, A> RefUnwindSafe for SccData<S, A>where
S: RefUnwindSafe,
A: RefUnwindSafe,
impl<S, A> Send for SccData<S, A>
impl<S, A> Sync for SccData<S, A>
impl<S, A> Unpin for SccData<S, A>
impl<S, A> UnwindSafe for SccData<S, A>where
S: UnwindSafe,
A: 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
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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 moresource§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 48 bytes