Enum rustc::hir::Expr_
[−]
[src]
pub enum Expr_ { ExprBox(P<Expr>), ExprArray(HirVec<Expr>), ExprCall(P<Expr>, HirVec<Expr>), ExprMethodCall(Spanned<Name>, HirVec<P<Ty>>, HirVec<Expr>), ExprTup(HirVec<Expr>), ExprBinary(BinOp, P<Expr>, P<Expr>), ExprUnary(UnOp, P<Expr>), ExprLit(P<Lit>), 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<Name>>), ExprLoop(P<Block>, Option<Spanned<Name>>, LoopSource), ExprMatch(P<Expr>, HirVec<Arm>, MatchSource), ExprClosure(CaptureClause, P<FnDecl>, BodyId, Span), ExprBlock(P<Block>), ExprAssign(P<Expr>, P<Expr>), ExprAssignOp(BinOp, P<Expr>, P<Expr>), ExprField(P<Expr>, Spanned<Name>), 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>, HirVec<Expr>, HirVec<Expr>), ExprStruct(QPath, HirVec<Field>, Option<P<Expr>>), ExprRepeat(P<Expr>, BodyId), }
rustc_private
)Variants
ExprBox(P<Expr>)
rustc_private
)A box x
expression.
ExprArray(HirVec<Expr>)
rustc_private
)An array ([a, b, c, d]
)
ExprCall(P<Expr>, HirVec<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<Name>, HirVec<P<Ty>>, HirVec<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(HirVec<Expr>)
rustc_private
)A tuple ((a, b, c ,d)
)
ExprBinary(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<Lit>)
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<Name>>)
rustc_private
)A while loop, with an optional label
'label: while expr { block }
ExprLoop(P<Block>, Option<Spanned<Name>>, LoopSource)
rustc_private
)Conditionless loop (can be exited with break, continue, or return)
'label: loop { block }
ExprMatch(P<Expr>, HirVec<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(BinOp, P<Expr>, P<Expr>)
rustc_private
)An assignment with an operator
For example, a += 1
.
ExprField(P<Expr>, Spanned<Name>)
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>, HirVec<Expr>, HirVec<Expr>)
rustc_private
)Inline assembly (from asm!
), with its outputs and inputs.
ExprStruct(QPath, HirVec<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 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 PartialEq 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 Eq for Expr_
[src]
impl Encodable for Expr_
[src]
fn encode<__S: Encoder>(&self, __arg_0: &mut __S) -> Result<(), __S::Error>
🔬 This is a nightly-only experimental API. (rustc_private
)
deprecated in favor of rustc-serialize on crates.io
impl Decodable for Expr_
[src]
fn decode<__D: Decoder>(__arg_0: &mut __D) -> Result<Expr_, __D::Error>
🔬 This is a nightly-only experimental API. (rustc_private
)
deprecated in favor of rustc-serialize on crates.io
impl Hash for Expr_
[src]
fn hash<__H: Hasher>(&self, __arg_0: &mut __H)
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.