pub enum Node<'hir> {
Show 26 variants
Param(&'hir Param<'hir>),
Item(&'hir Item<'hir>),
ForeignItem(&'hir ForeignItem<'hir>),
TraitItem(&'hir TraitItem<'hir>),
ImplItem(&'hir ImplItem<'hir>),
Variant(&'hir Variant<'hir>),
Field(&'hir FieldDef<'hir>),
AnonConst(&'hir AnonConst),
ConstBlock(&'hir ConstBlock),
Expr(&'hir Expr<'hir>),
ExprField(&'hir ExprField<'hir>),
Stmt(&'hir Stmt<'hir>),
PathSegment(&'hir PathSegment<'hir>),
Ty(&'hir Ty<'hir>),
TypeBinding(&'hir TypeBinding<'hir>),
TraitRef(&'hir TraitRef<'hir>),
Pat(&'hir Pat<'hir>),
PatField(&'hir PatField<'hir>),
Arm(&'hir Arm<'hir>),
Block(&'hir Block<'hir>),
Local(&'hir Local<'hir>),
Ctor(&'hir VariantData<'hir>),
Lifetime(&'hir Lifetime),
GenericParam(&'hir GenericParam<'hir>),
Crate(&'hir Mod<'hir>),
Infer(&'hir InferArg),
}
Variants§
Param(&'hir Param<'hir>)
Item(&'hir Item<'hir>)
ForeignItem(&'hir ForeignItem<'hir>)
TraitItem(&'hir TraitItem<'hir>)
ImplItem(&'hir ImplItem<'hir>)
Variant(&'hir Variant<'hir>)
Field(&'hir FieldDef<'hir>)
AnonConst(&'hir AnonConst)
ConstBlock(&'hir ConstBlock)
Expr(&'hir Expr<'hir>)
ExprField(&'hir ExprField<'hir>)
Stmt(&'hir Stmt<'hir>)
PathSegment(&'hir PathSegment<'hir>)
Ty(&'hir Ty<'hir>)
TypeBinding(&'hir TypeBinding<'hir>)
TraitRef(&'hir TraitRef<'hir>)
Pat(&'hir Pat<'hir>)
PatField(&'hir PatField<'hir>)
Arm(&'hir Arm<'hir>)
Block(&'hir Block<'hir>)
Local(&'hir Local<'hir>)
Ctor(&'hir VariantData<'hir>)
Ctor
refers to the constructor of an enum variant or struct. Only tuple or unit variants
with synthesized constructors.
Lifetime(&'hir Lifetime)
GenericParam(&'hir GenericParam<'hir>)
Crate(&'hir Mod<'hir>)
Infer(&'hir InferArg)
Implementations§
source§impl<'hir> Node<'hir>
impl<'hir> Node<'hir>
sourcepub fn ident(&self) -> Option<Ident>
pub fn ident(&self) -> Option<Ident>
Get the identifier of this Node
, if applicable.
Edge cases
Calling .ident()
on a Node::Ctor
will return None
because Ctor
s do not have identifiers themselves.
Instead, call .ident()
on the parent struct/variant, like so:
ctor
.ctor_hir_id()
.and_then(|ctor_id| tcx.hir().find_parent(ctor_id))
.and_then(|parent| parent.ident())
pub fn fn_decl(self) -> Option<&'hir FnDecl<'hir>>
pub fn fn_sig(self) -> Option<&'hir FnSig<'hir>>
sourcepub fn ty(self) -> Option<&'hir Ty<'hir>>
pub fn ty(self) -> Option<&'hir Ty<'hir>>
Get the type for constants, assoc types, type aliases and statics.
pub fn alias_ty(self) -> Option<&'hir Ty<'hir>>
pub fn body_id(&self) -> Option<BodyId>
pub fn generics(self) -> Option<&'hir Generics<'hir>>
pub fn as_owner(self) -> Option<OwnerNode<'hir>>
pub fn fn_kind(self) -> Option<FnKind<'hir>>
sourcepub fn tuple_fields(&self) -> Option<&'hir [FieldDef<'hir>]>
pub fn tuple_fields(&self) -> Option<&'hir [FieldDef<'hir>]>
Get the fields for the tuple-constructor, if this node is a tuple constructor, otherwise None
sourcepub fn expect_param(self) -> &'hir Param<'hir>
pub fn expect_param(self) -> &'hir Param<'hir>
Expect a Node::Param
or panic.
sourcepub fn expect_item(self) -> &'hir Item<'hir>
pub fn expect_item(self) -> &'hir Item<'hir>
Expect a Node::Item
or panic.
sourcepub fn expect_foreign_item(self) -> &'hir ForeignItem<'hir>
pub fn expect_foreign_item(self) -> &'hir ForeignItem<'hir>
Expect a Node::ForeignItem
or panic.
sourcepub fn expect_trait_item(self) -> &'hir TraitItem<'hir>
pub fn expect_trait_item(self) -> &'hir TraitItem<'hir>
Expect a Node::TraitItem
or panic.
sourcepub fn expect_impl_item(self) -> &'hir ImplItem<'hir>
pub fn expect_impl_item(self) -> &'hir ImplItem<'hir>
Expect a Node::ImplItem
or panic.
sourcepub fn expect_variant(self) -> &'hir Variant<'hir>
pub fn expect_variant(self) -> &'hir Variant<'hir>
Expect a Node::Variant
or panic.
sourcepub fn expect_field(self) -> &'hir FieldDef<'hir>
pub fn expect_field(self) -> &'hir FieldDef<'hir>
Expect a Node::Field
or panic.
sourcepub fn expect_anon_const(self) -> &'hir AnonConst
pub fn expect_anon_const(self) -> &'hir AnonConst
Expect a Node::AnonConst
or panic.
sourcepub fn expect_inline_const(self) -> &'hir ConstBlock
pub fn expect_inline_const(self) -> &'hir ConstBlock
Expect a Node::ConstBlock
or panic.
sourcepub fn expect_expr(self) -> &'hir Expr<'hir>
pub fn expect_expr(self) -> &'hir Expr<'hir>
Expect a Node::Expr
or panic.
sourcepub fn expect_expr_field(self) -> &'hir ExprField<'hir>
pub fn expect_expr_field(self) -> &'hir ExprField<'hir>
Expect a Node::ExprField
or panic.
sourcepub fn expect_stmt(self) -> &'hir Stmt<'hir>
pub fn expect_stmt(self) -> &'hir Stmt<'hir>
Expect a Node::Stmt
or panic.
sourcepub fn expect_path_segment(self) -> &'hir PathSegment<'hir>
pub fn expect_path_segment(self) -> &'hir PathSegment<'hir>
Expect a Node::PathSegment
or panic.
sourcepub fn expect_type_binding(self) -> &'hir TypeBinding<'hir>
pub fn expect_type_binding(self) -> &'hir TypeBinding<'hir>
Expect a Node::TypeBinding
or panic.
sourcepub fn expect_trait_ref(self) -> &'hir TraitRef<'hir>
pub fn expect_trait_ref(self) -> &'hir TraitRef<'hir>
Expect a Node::TraitRef
or panic.
sourcepub fn expect_pat(self) -> &'hir Pat<'hir>
pub fn expect_pat(self) -> &'hir Pat<'hir>
Expect a Node::Pat
or panic.
sourcepub fn expect_pat_field(self) -> &'hir PatField<'hir>
pub fn expect_pat_field(self) -> &'hir PatField<'hir>
Expect a Node::PatField
or panic.
sourcepub fn expect_arm(self) -> &'hir Arm<'hir>
pub fn expect_arm(self) -> &'hir Arm<'hir>
Expect a Node::Arm
or panic.
sourcepub fn expect_block(self) -> &'hir Block<'hir>
pub fn expect_block(self) -> &'hir Block<'hir>
Expect a Node::Block
or panic.
sourcepub fn expect_local(self) -> &'hir Local<'hir>
pub fn expect_local(self) -> &'hir Local<'hir>
Expect a Node::Local
or panic.
sourcepub fn expect_ctor(self) -> &'hir VariantData<'hir>
pub fn expect_ctor(self) -> &'hir VariantData<'hir>
Expect a Node::Ctor
or panic.
sourcepub fn expect_lifetime(self) -> &'hir Lifetime
pub fn expect_lifetime(self) -> &'hir Lifetime
Expect a Node::Lifetime
or panic.
sourcepub fn expect_generic_param(self) -> &'hir GenericParam<'hir>
pub fn expect_generic_param(self) -> &'hir GenericParam<'hir>
Expect a Node::GenericParam
or panic.
sourcepub fn expect_crate(self) -> &'hir Mod<'hir>
pub fn expect_crate(self) -> &'hir Mod<'hir>
Expect a Node::Crate
or panic.
sourcepub fn expect_infer(self) -> &'hir InferArg
pub fn expect_infer(self) -> &'hir InferArg
Expect a Node::Infer
or panic.
fn expect_failed(&self, expected: &'static str) -> !
Trait Implementations§
source§impl<'hir, __CTX> HashStable<__CTX> for Node<'hir>where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for Node<'hir>where __CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
impl<'hir> Copy for Node<'hir>
Auto Trait Implementations§
impl<'hir> !RefUnwindSafe for Node<'hir>
impl<'hir> !Send for Node<'hir>
impl<'hir> !Sync for Node<'hir>
impl<'hir> Unpin for Node<'hir>
impl<'hir> !UnwindSafe for Node<'hir>
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
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: 16 bytes
Size for each variant:
Param
: 8 bytesItem
: 8 bytesForeignItem
: 8 bytesTraitItem
: 8 bytesImplItem
: 8 bytesVariant
: 8 bytesField
: 8 bytesAnonConst
: 8 bytesConstBlock
: 8 bytesExpr
: 8 bytesExprField
: 8 bytesStmt
: 8 bytesPathSegment
: 8 bytesTy
: 8 bytesTypeBinding
: 8 bytesTraitRef
: 8 bytesPat
: 8 bytesPatField
: 8 bytesArm
: 8 bytesBlock
: 8 bytesLocal
: 8 bytesCtor
: 8 bytesLifetime
: 8 bytesGenericParam
: 8 bytesCrate
: 8 bytesInfer
: 8 bytes