Enum syntax::ast::ExprKind
[−]
[src]
pub enum ExprKind { Box(P<Expr>), InPlace(P<Expr>, P<Expr>), Vec(Vec<P<Expr>>), Call(P<Expr>, Vec<P<Expr>>), MethodCall(SpannedIdent, Vec<P<Ty>>, Vec<P<Expr>>), Tup(Vec<P<Expr>>), Binary(BinOp, P<Expr>, P<Expr>), Unary(UnOp, P<Expr>), Lit(P<Lit>), Cast(P<Expr>, P<Ty>), Type(P<Expr>, P<Ty>), If(P<Expr>, P<Block>, Option<P<Expr>>), IfLet(P<Pat>, P<Expr>, P<Block>, Option<P<Expr>>), While(P<Expr>, P<Block>, Option<Ident>), WhileLet(P<Pat>, P<Expr>, P<Block>, Option<Ident>), ForLoop(P<Pat>, P<Expr>, P<Block>, Option<Ident>), Loop(P<Block>, Option<Ident>), Match(P<Expr>, Vec<Arm>), Closure(CaptureBy, P<FnDecl>, P<Block>, Span), Block(P<Block>), Assign(P<Expr>, P<Expr>), AssignOp(BinOp, P<Expr>, P<Expr>), Field(P<Expr>, SpannedIdent), TupField(P<Expr>, Spanned<usize>), Index(P<Expr>, P<Expr>), Range(Option<P<Expr>>, Option<P<Expr>>, RangeLimits), Path(Option<QSelf>, Path), AddrOf(Mutability, P<Expr>), Break(Option<SpannedIdent>), Again(Option<SpannedIdent>), Ret(Option<P<Expr>>), InlineAsm(InlineAsm), Mac(Mac), Struct(Path, Vec<Field>, Option<P<Expr>>), Repeat(P<Expr>, P<Expr>), Paren(P<Expr>), Try(P<Expr>), }
rustc_private
)Variants
Box(P<Expr>)
rustc_private
)A box x
expression.
InPlace(P<Expr>, P<Expr>)
rustc_private
)First expr is the place; second expr is the value.
Vec(Vec<P<Expr>>)
rustc_private
)An array ([a, b, c, d]
)
Call(P<Expr>, Vec<P<Expr>>)
rustc_private
)A function call
The first field resolves to the function itself, and the second field is the list of arguments
MethodCall(SpannedIdent, Vec<P<Ty>>, Vec<P<Expr>>)
rustc_private
)A method call (x.foo::<Bar, Baz>(a, b, c, d)
)
The SpannedIdent
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
ExprKind::MethodCall(foo, [Bar, Baz], [x, a, b, c, d])
.
Tup(Vec<P<Expr>>)
rustc_private
)A tuple ((a, b, c ,d)
)
Binary(BinOp, P<Expr>, P<Expr>)
rustc_private
)A binary operation (For example: a + b
, a * b
)
Unary(UnOp, P<Expr>)
rustc_private
)A unary operation (For example: !x
, *x
)
Lit(P<Lit>)
rustc_private
)A literal (For example: 1
, "foo"
)
Cast(P<Expr>, P<Ty>)
rustc_private
)A cast (foo as f64
)
Type(P<Expr>, P<Ty>)
rustc_private
)If(P<Expr>, P<Block>, Option<P<Expr>>)
rustc_private
)An if
block, with an optional else block
if expr { block } else { expr }
IfLet(P<Pat>, P<Expr>, P<Block>, Option<P<Expr>>)
rustc_private
)An if let
expression with an optional else block
if let pat = expr { block } else { expr }
This is desugared to a match
expression.
While(P<Expr>, P<Block>, Option<Ident>)
rustc_private
)A while loop, with an optional label
'label: while expr { block }
WhileLet(P<Pat>, P<Expr>, P<Block>, Option<Ident>)
rustc_private
)A while-let loop, with an optional label
'label: while let pat = expr { block }
This is desugared to a combination of loop
and match
expressions.
ForLoop(P<Pat>, P<Expr>, P<Block>, Option<Ident>)
rustc_private
)A for loop, with an optional label
'label: for pat in expr { block }
This is desugared to a combination of loop
and match
expressions.
Loop(P<Block>, Option<Ident>)
rustc_private
)Conditionless loop (can be exited with break, continue, or return)
'label: loop { block }
Match(P<Expr>, Vec<Arm>)
rustc_private
)A match
block.
Closure(CaptureBy, P<FnDecl>, P<Block>, Span)
rustc_private
)A closure (for example, move |a, b, c| {a + b + c}
)
The final span is the span of the argument block |...|
Block(P<Block>)
rustc_private
)A block ({ ... }
)
Assign(P<Expr>, P<Expr>)
rustc_private
)An assignment (a = foo()
)
AssignOp(BinOp, P<Expr>, P<Expr>)
rustc_private
)An assignment with an operator
For example, a += 1
.
Field(P<Expr>, SpannedIdent)
rustc_private
)Access of a named struct field (obj.foo
)
TupField(P<Expr>, Spanned<usize>)
rustc_private
)Access of an unnamed field of a struct or tuple-struct
For example, foo.0
.
Index(P<Expr>, P<Expr>)
rustc_private
)An indexing operation (foo[2]
)
Range(Option<P<Expr>>, Option<P<Expr>>, RangeLimits)
rustc_private
)A range (1..2
, 1..
, ..2
, 1...2
, 1...
, ...2
)
Path(Option<QSelf>, Path)
rustc_private
)Variable reference, possibly containing ::
and/or type
parameters, e.g. foo::bar::
Optionally "qualified",
e.g. <Vec<T> as SomeTrait>::SomeType
.
AddrOf(Mutability, P<Expr>)
rustc_private
)A referencing operation (&a
or &mut a
)
Break(Option<SpannedIdent>)
rustc_private
)A break
, with an optional label to break
Again(Option<SpannedIdent>)
rustc_private
)A continue
, with an optional label
Ret(Option<P<Expr>>)
rustc_private
)A return
, with an optional value to be returned
InlineAsm(InlineAsm)
rustc_private
)Output of the asm!()
macro
Mac(Mac)
rustc_private
)A macro invocation; pre-expansion
Struct(Path, Vec<Field>, Option<P<Expr>>)
rustc_private
)A struct literal expression.
For example, Foo {x: 1, y: 2}
, or
Foo {x: 1, .. base}
, where base
is the Option<Expr>
.
Repeat(P<Expr>, P<Expr>)
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.
Paren(P<Expr>)
rustc_private
)No-op: used solely so we can pretty-print faithfully
Try(P<Expr>)
rustc_private
)expr?
Trait Implementations
Derived Implementations
impl Debug for ExprKind
[src]
impl Hash for ExprKind
[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.
impl Decodable for ExprKind
[src]
impl Encodable for ExprKind
[src]
impl Eq for ExprKind
[src]
impl PartialEq for ExprKind
[src]
fn eq(&self, __arg_0: &ExprKind) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &ExprKind) -> bool
This method tests for !=
.
impl Clone for ExprKind
[src]
fn clone(&self) -> ExprKind
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