Enum rhai::Stmt[][src]

pub enum Stmt {
Show variants Noop(Position), If(ExprBox<(StmtBlock, StmtBlock)>, Position), Switch(ExprBox<(BTreeMap<u64, Box<(Option<Expr>, StmtBlock)>>, StmtBlock)>, Position), While(ExprBox<StmtBlock>, Position), Do(Box<StmtBlock>, ExprboolPosition), For(ExprBox<(Ident, Option<Ident>, StmtBlock)>, Position), Let(ExprBox<Ident>, boolPosition), Const(ExprBox<Ident>, boolPosition), Assignment(Box<(Expr, Option<OpAssignment<'static>>, Expr)>, Position), FnCall(Box<FnCallExpr>, Position), Block(Box<[Stmt]>, Position), TryCatch(Box<(StmtBlock, Option<Ident>, StmtBlock)>, Position), Expr(Expr), Continue(Position), Break(Position), Return(ReturnTypeOption<Expr>, Position), Import(ExprOption<Box<Ident>>, Position), Export(Box<[(Ident, Ident)]>, Position), Share(Identifier),
}
Expand description

(INTERNALS) A statement. Exported under the internals feature only.

Volatile Data Structure

This type is volatile and may change.

Variants

Noop(Position)

No-op.

if expr { stmt } else { stmt }

switch expr if condition { literal or _ => stmt ,}

while expr { stmt }

do { stmt } while|until expr

for ( id , counter ) in expr { stmt }

Let(ExprBox<Ident>, boolPosition)

[export] let id = expr

Const(ExprBox<Ident>, boolPosition)

[export] const id = expr

Assignment(Box<(Expr, Option<OpAssignment<'static>>, Expr)>, Position)

expr op= expr

func ( expr ,)

Note - this is a duplicate of Expr::FnCall to cover the very common pattern of a single function call forming one statement.

Block(Box<[Stmt]>, Position)

{ stmt;}

try { stmt; … } catch ( var ) { stmt; … }

Expr(Expr)
Continue(Position)

continue

Break(Position)

break

return/throw

Import(ExprOption<Box<Ident>>, Position)

import expr as var

Not available under no_module.

export var as var ,

Not available under no_module.

Share(Identifier)

Convert a variable to shared.

Not available under no_closure.

Implementations

Is this statement Noop?

Get the position of this statement.

Override the position of this statement.

Does this statement return a value?

Is this statement self-terminated (i.e. no need for a semicolon terminator)?

Is this statement pure?

A pure statement has no side effects.

Is this statement pure within the containing block?

An internally pure statement only has side effects that disappear outside the block.

Only variable declarations (i.e. let and const) and import/export statements are internally pure.

Does this statement break the current control flow through the containing block?

Currently this is only true for return, throw, break and continue.

All statements following this statement will essentially be dead code.

Recursively walk this statement. Return false from the callback to terminate the walk.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Performs the conversion.

Performs the conversion.

Performs the conversion.

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.