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: AssocItemThe associated item described by this LeafDef.
defining_node: NodeThe 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§
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
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