Skip to main content

Expr

Enum Expr 

Source
pub enum Expr {
Show 16 variants Literal(Literal), Path(Path), MethodCall { receiver: Option<Box<Expr>>, name: Ident, args: Vec<Expr>, }, Field { value: Box<Expr>, name: Ident, }, Index { value: Box<Expr>, index: Box<Expr>, }, New { type_: Box<Type>, args: Vec<Expr>, }, NewArray { element: Box<Type>, lengths: Vec<Expr>, elements: Vec<Expr>, }, Binary { op: &'static str, lhs: Box<Expr>, rhs: Box<Expr>, }, Paren(Box<Expr>), Cast { type_: Box<Type>, value: Box<Expr>, }, InstanceOf { value: Box<Expr>, type_: Box<Type>, }, Ternary { condition: Box<Expr>, then: Box<Expr>, otherwise: Box<Expr>, }, This, Lambda { params: Vec<Ident>, body: Box<Expr>, }, Annotation(Annotation), ArrayInit(Vec<Expr>),
}
Expand description

An expression.

Variants§

§

Literal(Literal)

A literal.

§

Path(Path)

A name or qualified name.

§

MethodCall

receiver.name(args)

Fields

§receiver: Option<Box<Expr>>

The receiver, absent for an unqualified call.

§name: Ident

The method.

§args: Vec<Expr>

Arguments.

§

Field

value.name

Fields

§value: Box<Expr>

The value.

§name: Ident

The field.

§

Index

a[i]

Fields

§value: Box<Expr>

The array.

§index: Box<Expr>

The index.

§

New

new T(args)

Fields

§type_: Box<Type>

The type.

§args: Vec<Expr>

Arguments.

§

NewArray

new T[]{ a, b }, new T[n], new T[n][m], new T[n][].

Fields

§element: Box<Type>

The element type, which may itself be an array.

Its own []s are written after the sized dimensions: new int[n][] allocates n rows of int[], and new int[][n] is not a form Java has. A sequence of a fixed-size array reaches exactly that shape.

§lengths: Vec<Expr>

One per sized dimension, outermost first. Empty asks for the initialiser form.

§elements: Vec<Expr>

The elements, for the initialiser form.

§

Binary

a op b

Fields

§op: &'static str

The operator, as written.

§lhs: Box<Expr>

Left.

§rhs: Box<Expr>

Right.

§

Paren(Box<Expr>)

(value), written because the writer meant it.

The tree carries no precedence and the renderer adds no brackets, so a caller that needs one says so. Java’s & binds looser than !=, which makes bits & mask != 0 a type error where C reads it as a comparison — and looser than ^, which makes bits & a ^ b a different number with nothing to say so.

§

Cast

(T) value

Fields

§type_: Box<Type>

The target type.

§value: Box<Expr>

The value.

§

InstanceOf

value instanceof T

Fields

§value: Box<Expr>

The value.

§type_: Box<Type>

The type.

§

Ternary

cond ? a : b

Fields

§condition: Box<Expr>

The condition.

§then: Box<Expr>

The then-value.

§otherwise: Box<Expr>

The else-value.

§

This

this

§

Lambda

A lambda: (a, b) -> body.

Fields

§params: Vec<Ident>

Parameter names.

§body: Box<Expr>

The body as an expression.

§

Annotation(Annotation)

An annotation used as a value: an element of an annotation type that is itself an annotation, or of an array of them.

§

ArrayInit(Vec<Expr>)

{ a, b }, the array initialiser of an annotation element.

Trait Implementations§

Source§

impl Clone for Expr

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Expr

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Expr

Source§

impl PartialEq for Expr

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Expr

Auto Trait Implementations§

§

impl Freeze for Expr

§

impl RefUnwindSafe for Expr

§

impl Send for Expr

§

impl Sync for Expr

§

impl Unpin for Expr

§

impl UnsafeUnpin for Expr

§

impl UnwindSafe for Expr

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.