pub struct Body<'hir> {
pub params: &'hir [Param<'hir>],
pub value: &'hir Expr<'hir>,
}
Expand description
The body of a function, closure, or constant value. In the case of a function, the body contains not only the function body itself (which is an expression), but also the argument patterns, since those are something that the caller doesn’t really care about.
§Examples
fn foo((x, y): (u32, u32)) -> u32 {
x + y
}
Here, the Body
associated with foo()
would contain:
- an
params
array containing the(x, y)
pattern - a
value
containing thex + y
expression (maybe wrapped in a block) coroutine_kind
would beNone
All bodies have an owner, which can be accessed via the HIR
map using body_owner_def_id()
.
Fields§
§params: &'hir [Param<'hir>]
§value: &'hir Expr<'hir>
Implementations§
Trait Implementations§
source§impl<'hir, __CTX> HashStable<__CTX> for Body<'hir>where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for Body<'hir>where
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
impl<'hir> Copy for Body<'hir>
Auto Trait Implementations§
impl<'hir> DynSend for Body<'hir>
impl<'hir> DynSync for Body<'hir>
impl<'hir> Freeze for Body<'hir>
impl<'hir> RefUnwindSafe for Body<'hir>
impl<'hir> Send for Body<'hir>
impl<'hir> Sync for Body<'hir>
impl<'hir> Unpin for Body<'hir>
impl<'hir> UnwindSafe for Body<'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
Mutably borrows from an owned value. Read more
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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: 24 bytes