pub enum StmtKind<'ast> {
Show 17 variants
Assembly(StmtAssembly<'ast>),
DeclSingle(&'ast mut VariableDefinition<'ast>),
DeclMulti(&'ast mut RawThinSlice<(), SpannedOption<VariableDefinition<'ast>>>, &'ast mut Expr<'ast>),
Block(Block<'ast>),
Break,
Continue,
DoWhile(&'ast mut Stmt<'ast>, &'ast mut Expr<'ast>),
Emit(AstPath<'ast>, CallArgs<'ast>),
Expr(&'ast mut Expr<'ast>),
For {
init: Option<&'ast mut Stmt<'ast>>,
cond: Option<&'ast mut Expr<'ast>>,
next: Option<&'ast mut Expr<'ast>>,
body: &'ast mut Stmt<'ast>,
},
If(&'ast mut Expr<'ast>, &'ast mut Stmt<'ast>, Option<&'ast mut Stmt<'ast>>),
Return(Option<&'ast mut Expr<'ast>>),
Revert(AstPath<'ast>, CallArgs<'ast>),
Try(&'ast mut StmtTry<'ast>),
UncheckedBlock(Block<'ast>),
While(&'ast mut Expr<'ast>, &'ast mut Stmt<'ast>),
Placeholder,
}Expand description
A kind of statement.
Variants§
Assembly(StmtAssembly<'ast>)
An assembly block, with optional flags: assembly "evmasm" (...) { ... }.
DeclSingle(&'ast mut VariableDefinition<'ast>)
A single-variable declaration statement: uint256 foo = 42;.
DeclMulti(&'ast mut RawThinSlice<(), SpannedOption<VariableDefinition<'ast>>>, &'ast mut Expr<'ast>)
A multi-variable declaration statement: (bool success, bytes memory value) = ...;.
Multi-assignments require an expression on the right-hand side.
Block(Block<'ast>)
A blocked scope: { ... }.
Break
A break statement: break;.
Continue
A continue statement: continue;.
DoWhile(&'ast mut Stmt<'ast>, &'ast mut Expr<'ast>)
A do-while statement: do { ... } while (condition);.
Emit(AstPath<'ast>, CallArgs<'ast>)
An emit statement: emit Foo.bar(42);.
Expr(&'ast mut Expr<'ast>)
An expression with a trailing semicolon.
For
A for statement: for (uint256 i; i < 42; ++i) { ... }.
Fields
If(&'ast mut Expr<'ast>, &'ast mut Stmt<'ast>, Option<&'ast mut Stmt<'ast>>)
An if statement with an optional else block: if (expr) { ... } else { ... }.
Return(Option<&'ast mut Expr<'ast>>)
A return statement: return 42;.
Revert(AstPath<'ast>, CallArgs<'ast>)
A revert statement: revert Foo.bar(42);.
Try(&'ast mut StmtTry<'ast>)
A try statement: try fooBar(42) returns (...) { ... } catch (...) { ... }.
UncheckedBlock(Block<'ast>)
An unchecked block: unchecked { ... }.
While(&'ast mut Expr<'ast>, &'ast mut Stmt<'ast>)
A while statement: while (i < 42) { ... }.
Placeholder
A modifier placeholder statement: _;.
Trait Implementations§
Auto Trait Implementations§
impl<'ast> Freeze for StmtKind<'ast>
impl<'ast> RefUnwindSafe for StmtKind<'ast>
impl<'ast> Send for StmtKind<'ast>
impl<'ast> Sync for StmtKind<'ast>
impl<'ast> Unpin for StmtKind<'ast>
impl<'ast> !UnwindSafe for StmtKind<'ast>
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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
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>
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> ⓘ
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> ⓘ
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