Struct rustc_infer::traits::specialization_graph::LeafDef
source · pub struct LeafDef {
pub item: AssocItem,
pub defining_node: Node,
pub finalizing_node: Option<Node>,
}
Expand description
Information about the most specialized definition of an associated item.
Fields§
§item: AssocItem
The associated item described by this LeafDef
.
defining_node: Node
The node in the specialization graph containing the definition of item
.
finalizing_node: Option<Node>
The “top-most” (ie. least specialized) specialization graph node that finalized the
definition of item
.
Example:
#![feature(specialization)]
trait Tr {
fn assoc(&self);
}
impl<T> Tr for T {
default fn assoc(&self) {}
}
impl Tr for u8 {}
If we start the leaf definition search at impl Tr for u8
, that impl will be the
finalizing_node
, while defining_node
will be the generic impl.
If the leaf definition search is started at the generic impl, finalizing_node
will be
None
, since the most specialized impl we found still allows overriding the method
(doesn’t finalize it).
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl DynSend for LeafDef
impl DynSync for LeafDef
impl Freeze for LeafDef
impl RefUnwindSafe for LeafDef
impl Send for LeafDef
impl Sync for LeafDef
impl Unpin for LeafDef
impl UnwindSafe for LeafDef
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
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
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<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> 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,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
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: 64 bytes