Struct rustc_trait_selection::traits::util::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).
Auto Trait Implementations
impl RefUnwindSafe for LeafDef
impl Send for LeafDef
impl Sync for LeafDef
impl Unpin for LeafDef
impl UnwindSafe for LeafDef
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut 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: 48 bytes