Enum rustc_hir::hir::QPath[][src]

pub enum QPath<'hir> {
    Resolved(Option<&'hir Ty<'hir>>, &'hir Path<'hir>),
    TypeRelative(&'hir Ty<'hir>, &'hir PathSegment<'hir>),
    LangItem(LangItemSpan),
}

Represents an optionally Self-qualified value/type path or associated extension.

To resolve the path to a DefId, call qpath_res.

Variants

Resolved(Option<&'hir Ty<'hir>>, &'hir Path<'hir>)

Path to a definition, optionally “fully-qualified” with a Self type, if the path points to an associated item in a trait.

E.g., an unqualified path like Clone::clone has None for Self, while <Vec<T> as Clone>::clone has Some(Vec<T>) for Self, even though they both have the same two-segment Clone::clone Path.

TypeRelative(&'hir Ty<'hir>, &'hir PathSegment<'hir>)

Type-related paths (e.g., <T>::default or <T>::Output). Will be resolved by type-checking to an associated item.

UFCS source paths can desugar into this, with Vec::new turning into <Vec>::new, and T::X::Y::method into <<<T>::X>::Y>::method, the X and Y nodes each being a TyKind::Path(QPath::TypeRelative(..)).

LangItem(LangItemSpan)

Reference to a #[lang = "foo"] item.

Implementations

impl<'hir> QPath<'hir>[src]

pub fn span(&self) -> Span[src]

Returns the span of this QPath.

pub fn qself_span(&self) -> Span[src]

Returns the span of the qself of this QPath. For example, () in <() as Trait>::method.

pub fn last_segment_span(&self) -> Span[src]

Returns the span of the last segment of this QPath. For example, method in <() as Trait>::method.

Trait Implementations

impl<'hir> Debug for QPath<'hir>[src]

impl<'hir, __CTX> HashStable<__CTX> for QPath<'hir> where
    __CTX: HashStableContext
[src]

Auto Trait Implementations

impl<'hir> !RefUnwindSafe for QPath<'hir>

impl<'hir> !Send for QPath<'hir>

impl<'hir> !Sync for QPath<'hir>

impl<'hir> Unpin for QPath<'hir>

impl<'hir> !UnwindSafe for QPath<'hir>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.