Struct rustc_middle::traits::specialization_graph::Graph [−][src]
pub struct Graph {
pub parent: DefIdMap<DefId>,
pub children: DefIdMap<Children>,
pub has_errored: bool,
}Expand description
A per-trait graph of impls in specialization order. At the moment, this graph forms a tree rooted with the trait itself, with all other nodes representing impls, and parent-child relationships representing specializations.
The graph provides two key services:
-
Construction. This implicitly checks for overlapping impls (i.e., impls that overlap but where neither specializes the other – an artifact of the simple “chain” rule.
-
Parent extraction. In particular, the graph can give you the immediate parents of a given specializing impl, which is needed for extracting default items amongst other things. In the simple “chain” rule, every impl has at most one parent.
Fields
parent: DefIdMap<DefId>Expand description
All impls have a parent; the “root” impls have as their parent the def_id
of the trait.
children: DefIdMap<Children>Expand description
The “root” impls are found by looking up the trait’s def_id.
has_errored: boolExpand description
Whether an error was emitted while constructing the graph.
Implementations
impl Graph[src]
impl Graph[src]Trait Implementations
impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for Graph[src]
impl<'__ctx> HashStable<StableHashingContext<'__ctx>> for Graph[src]fn hash_stable(
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)[src]
&self,
__hcx: &mut StableHashingContext<'__ctx>,
__hasher: &mut StableHasher
)
Auto Trait Implementations
impl RefUnwindSafe for Graph
impl Send for Graph
impl Sync for Graph
impl Unpin for Graph
impl UnwindSafe for Graph
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> MaybeResult<T> for T[src]
impl<T> MaybeResult<T> for T[src]impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]fn with_constness(self, constness: Constness) -> ConstnessAnd<Self>[src]
fn with_const(self) -> ConstnessAnd<Self>[src]
fn without_const(self) -> ConstnessAnd<Self>[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,