pub enum NameRefClass<'db> {
Definition(Definition, Option<GenericSubstitution<'db>>),
FieldShorthand {
local_ref: Local,
field_ref: Field,
adt_subst: GenericSubstitution<'db>,
},
ExternCrateShorthand {
decl: ExternCrateDecl,
krate: Crate,
},
}
Expand description
This is similar to NameClass
, but works for [ast::NameRef
] rather than
for [ast::Name
]. Similarly, what looks like a reference in syntax is a
reference most of the time, but there are a couple of annoying exceptions.
A model special case is field shorthand syntax, which uses a single reference to point to two different defs.
Variants§
Definition(Definition, Option<GenericSubstitution<'db>>)
FieldShorthand
ExternCrateShorthand
The specific situation where we have an extern crate decl without a rename Here we have both a declaration and a reference.
extern crate foo;
Implementations§
Source§impl<'db> NameRefClass<'db>
impl<'db> NameRefClass<'db>
pub fn classify( sema: &Semantics<'db, RootDatabase>, name_ref: &NameRef, ) -> Option<NameRefClass<'db>>
pub fn classify_lifetime( sema: &Semantics<'db, RootDatabase>, lifetime: &Lifetime, ) -> Option<NameRefClass<'db>>
Trait Implementations§
Auto Trait Implementations§
impl<'db> Freeze for NameRefClass<'db>
impl<'db> !RefUnwindSafe for NameRefClass<'db>
impl<'db> Send for NameRefClass<'db>
impl<'db> Sync for NameRefClass<'db>
impl<'db> Unpin for NameRefClass<'db>
impl<'db> !UnwindSafe for NameRefClass<'db>
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
Mutably borrows from an owned value. Read more
§impl<T> Cast for T
impl<T> Cast for T
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more