Enum ide_db::defs::NameRefClass
source · pub enum NameRefClass {
Definition(Definition),
FieldShorthand {
local_ref: Local,
field_ref: Field,
},
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)
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 NameRefClass
impl NameRefClass
pub fn classify( sema: &Semantics<'_, RootDatabase>, name_ref: &NameRef, ) -> Option<NameRefClass>
pub fn classify_lifetime( sema: &Semantics<'_, RootDatabase>, lifetime: &Lifetime, ) -> Option<NameRefClass>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for NameRefClass
impl RefUnwindSafe for NameRefClass
impl Send for NameRefClass
impl Sync for NameRefClass
impl Unpin for NameRefClass
impl UnwindSafe for NameRefClass
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> 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