Enum rustc_hir::def::DefKind [−][src]
pub enum DefKind {
Show variants
Mod,
Struct,
Union,
Enum,
Variant,
Trait,
TyAlias,
ForeignTy,
TraitAlias,
AssocTy,
TyParam,
Fn,
Const,
ConstParam,
Static,
Ctor(CtorOf, CtorKind),
AssocFn,
AssocConst,
Macro(MacroKind),
ExternCrate,
Use,
ForeignMod,
AnonConst,
OpaqueTy,
Field,
LifetimeParam,
GlobalAsm,
Impl,
Closure,
Generator,
}What kind of definition something is; e.g., mod vs struct.
Variants
Refers to the struct itself, DefKind::Ctor refers to its constructor if it exists.
Refers to the variant itself, DefKind::Ctor refers to its constructor if it exists.
Type alias: type Foo = Bar;
Type from an extern block.
Trait alias: trait IntIterator = Iterator<Item = i32>;
Associated type: trait MyTrait { type Assoc; }
Type parameter: the T in struct Vec<T> { ... }
Constant generic parameter: struct Foo<const N: usize> { ... }
Refers to the struct or enum variant’s constructor.
The reason Ctor exists in addition to DefKind::Struct and
DefKind::Variant is because structs and enum variants exist
in the type namespace, whereas struct and enum variant constructors
exist in the value namespace.
You may wonder why enum variants exist in the type namespace as opposed to the value namespace. Check out RFC 2593 for intuition on why that is.
Associated function: impl MyStruct { fn associated() {} }
Associated constant: trait MyTrait { const ASSOC: usize; }
Macro(MacroKind)An extern block.
Anonymous constant, e.g. the 1 + 2 in [u8; 1 + 2], or const { 1 + 2}
Opaque type, aka impl Trait.
Lifetime parameter: the 'a in struct Foo<'a> { ... }
A use of global_asm!.
Implementations
impl DefKind[src]
pub fn descr(self, def_id: DefId) -> &'static str[src]
pub fn article(&self) -> &'static str[src]
Gets an English article for the definition.
pub fn ns(&self) -> Option<Namespace>[src]
Trait Implementations
impl Clone for DefKind[src]
impl Copy for DefKind[src]
impl Debug for DefKind[src]
impl<__D: Decoder> Decodable<__D> for DefKind[src]
impl<__E: Encoder> Encodable<__E> for DefKind[src]
impl Eq for DefKind[src]
impl Hash for DefKind[src]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<__CTX> HashStable<__CTX> for DefKind where
__CTX: HashStableContext, [src]
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)[src]
impl PartialEq<DefKind> for DefKind[src]
impl StructuralEq for DefKind[src]
impl StructuralPartialEq for DefKind[src]
Auto Trait Implementations
impl RefUnwindSafe for DefKind
impl Send for DefKind
impl Sync for DefKind
impl Unpin for DefKind
impl UnwindSafe for DefKind
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,