pub struct Block<'hir> {
pub stmts: &'hir [Stmt<'hir>],
pub expr: Option<&'hir Expr<'hir>>,
pub hir_id: HirId,
pub rules: BlockCheckMode,
pub span: Span,
pub targeted_by_break: bool,
}
Expand description
A block of statements { .. }
, which may have a label (in this case the
targeted_by_break
field will be true
) and may be unsafe
by means of
the rules
being anything but DefaultBlock
.
Fields
stmts: &'hir [Stmt<'hir>]
Statements in a block.
expr: Option<&'hir Expr<'hir>>
An expression at the end of the block without a semicolon, if any.
hir_id: HirId
rules: BlockCheckMode
Distinguishes between unsafe { ... }
and { ... }
.
span: Span
targeted_by_break: bool
If true, then there may exist break 'a
values that aim to
break out of this block early.
Used by 'label: {}
blocks and by try {}
blocks.
Implementations
sourceimpl<'hir> Block<'hir>
impl<'hir> Block<'hir>
pub fn innermost_block(&self) -> &Block<'hir>
Trait Implementations
sourceimpl<'tcx> ArenaAllocatable<'tcx, IsNotCopy> for Block<'tcx>
impl<'tcx> ArenaAllocatable<'tcx, IsNotCopy> for Block<'tcx>
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut Self
fn allocate_from_iter<'a>(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = Self>
) -> &'a mut [Self]ⓘNotable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
sourceimpl<'hir, __CTX> HashStable<__CTX> for Block<'hir>where
__CTX: HashStableContext,
impl<'hir, __CTX> HashStable<__CTX> for Block<'hir>where
__CTX: HashStableContext,
fn hash_stable(&self, __hcx: &mut __CTX, __hasher: &mut StableHasher)
Auto Trait Implementations
impl<'hir> RefUnwindSafe for Block<'hir>
impl<'hir> !Send for Block<'hir>
impl<'hir> !Sync for Block<'hir>
impl<'hir> Unpin for Block<'hir>
impl<'hir> UnwindSafe for Block<'hir>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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: 48 bytes