Enum rustc_typeck::hir::Expr_
[−]
[src]
pub enum Expr_ { ExprBox(P<Expr>), ExprArray(P<[Expr]>), ExprCall(P<Expr>, P<[Expr]>), ExprMethodCall(Spanned<Symbol>, P<[P<Ty>]>, P<[Expr]>), ExprTup(P<[Expr]>), ExprBinary(Spanned<BinOp_>, P<Expr>, P<Expr>), ExprUnary(UnOp, P<Expr>), ExprLit(P<Spanned<LitKind>>), ExprCast(P<Expr>, P<Ty>), ExprType(P<Expr>, P<Ty>), ExprIf(P<Expr>, P<Block>, Option<P<Expr>>), ExprWhile(P<Expr>, P<Block>, Option<Spanned<Symbol>>), ExprLoop(P<Block>, Option<Spanned<Symbol>>, LoopSource), ExprMatch(P<Expr>, P<[Arm]>, MatchSource), ExprClosure(CaptureClause, P<FnDecl>, BodyId, Span), ExprBlock(P<Block>), ExprAssign(P<Expr>, P<Expr>), ExprAssignOp(Spanned<BinOp_>, P<Expr>, P<Expr>), ExprField(P<Expr>, Spanned<Symbol>), ExprTupField(P<Expr>, Spanned<usize>), ExprIndex(P<Expr>, P<Expr>), ExprPath(QPath), ExprAddrOf(Mutability, P<Expr>), ExprBreak(Destination, Option<P<Expr>>), ExprAgain(Destination), ExprRet(Option<P<Expr>>), ExprInlineAsm(P<InlineAsm>, P<[Expr]>, P<[Expr]>), ExprStruct(QPath, P<[Field]>, Option<P<Expr>>), ExprRepeat(P<Expr>, BodyId), }
rustc_private
)Variants
ExprBox(P<Expr>)
rustc_private
)A box x
expression.
ExprArray(P<[Expr]>)
rustc_private
)An array ([a, b, c, d]
)
ExprCall(P<Expr>, P<[Expr]>)
rustc_private
)A function call
The first field resolves to the function itself (usually an ExprPath
),
and the second field is the list of arguments
ExprMethodCall(Spanned<Symbol>, P<[P<Ty>]>, P<[Expr]>)
rustc_private
)A method call (x.foo::<Bar, Baz>(a, b, c, d)
)
The Spanned<Name>
is the identifier for the method name.
The vector of Ty
s are the ascripted type parameters for the method
(within the angle brackets).
The first element of the vector of Expr
s is the expression that
evaluates to the object on which the method is being called on (the
receiver), and the remaining elements are the rest of the arguments.
Thus, x.foo::<Bar, Baz>(a, b, c, d)
is represented as
ExprMethodCall(foo, [Bar, Baz], [x, a, b, c, d])
.
ExprTup(P<[Expr]>)
rustc_private
)A tuple ((a, b, c ,d)
)
ExprBinary(Spanned<BinOp_>, P<Expr>, P<Expr>)
rustc_private
)A binary operation (For example: a + b
, a * b
)
ExprUnary(UnOp, P<Expr>)
rustc_private
)A unary operation (For example: !x
, *x
)
ExprLit(P<Spanned<LitKind>>)
rustc_private
)A literal (For example: 1
, "foo"
)
ExprCast(P<Expr>, P<Ty>)
rustc_private
)A cast (foo as f64
)
ExprType(P<Expr>, P<Ty>)
rustc_private
)ExprIf(P<Expr>, P<Block>, Option<P<Expr>>)
rustc_private
)An if
block, with an optional else block
if expr { block } else { expr }
ExprWhile(P<Expr>, P<Block>, Option<Spanned<Symbol>>)
rustc_private
)A while loop, with an optional label
'label: while expr { block }
ExprLoop(P<Block>, Option<Spanned<Symbol>>, LoopSource)
rustc_private
)Conditionless loop (can be exited with break, continue, or return)
'label: loop { block }
ExprMatch(P<Expr>, P<[Arm]>, MatchSource)
rustc_private
)A match
block, with a source that indicates whether or not it is
the result of a desugaring, and if so, which kind.
ExprClosure(CaptureClause, P<FnDecl>, BodyId, Span)
rustc_private
)A closure (for example, move |a, b, c| {a + b + c}
).
The final span is the span of the argument block |...|
ExprBlock(P<Block>)
rustc_private
)A block ({ ... }
)
ExprAssign(P<Expr>, P<Expr>)
rustc_private
)An assignment (a = foo()
)
ExprAssignOp(Spanned<BinOp_>, P<Expr>, P<Expr>)
rustc_private
)An assignment with an operator
For example, a += 1
.
ExprField(P<Expr>, Spanned<Symbol>)
rustc_private
)Access of a named struct field (obj.foo
)
ExprTupField(P<Expr>, Spanned<usize>)
rustc_private
)Access of an unnamed field of a struct or tuple-struct
For example, foo.0
.
ExprIndex(P<Expr>, P<Expr>)
rustc_private
)An indexing operation (foo[2]
)
ExprPath(QPath)
rustc_private
)Path to a definition, possibly containing lifetime or type parameters.
ExprAddrOf(Mutability, P<Expr>)
rustc_private
)A referencing operation (&a
or &mut a
)
ExprBreak(Destination, Option<P<Expr>>)
rustc_private
)A break
, with an optional label to break
ExprAgain(Destination)
rustc_private
)A continue
, with an optional label
ExprRet(Option<P<Expr>>)
rustc_private
)A return
, with an optional value to be returned
ExprInlineAsm(P<InlineAsm>, P<[Expr]>, P<[Expr]>)
rustc_private
)Inline assembly (from asm!
), with its outputs and inputs.
ExprStruct(QPath, P<[Field]>, Option<P<Expr>>)
rustc_private
)A struct or struct-like variant literal expression.
For example, Foo {x: 1, y: 2}
, or
Foo {x: 1, .. base}
, where base
is the Option<Expr>
.
ExprRepeat(P<Expr>, BodyId)
rustc_private
)An array literal constructed from one repeated element.
For example, [1; 5]
. The first expression is the element
to be repeated; the second is the number of times to repeat it.
Trait Implementations
impl Decodable for Expr_
[src]
fn decode<__D>(__arg_0: &mut __D) -> Result<Expr_, __D::Error> where __D: Decoder
rustc_private
)impl PartialEq<Expr_> for Expr_
[src]
fn eq(&self, __arg_0: &Expr_) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &Expr_) -> bool
This method tests for !=
.
impl Hash for Expr_
[src]
fn hash<__H>(&self, __arg_0: &mut __H) where __H: Hasher
Feeds this value into the state given, updating the hasher as necessary.
fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0
Feeds a slice of this type into the state provided.
impl Clone for Expr_
[src]
fn clone(&self) -> Expr_
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl Eq for Expr_
[src]
impl Debug for Expr_
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result<(), Error>
Formats the value using the given formatter.