Struct rustc_middle::thir::Expr [−][src]
pub struct Expr<'tcx> {
pub ty: Ty<'tcx>,
pub temp_lifetime: Option<Scope>,
pub span: Span,
pub kind: ExprKind<'tcx>,
}Expand description
The Thir trait implementor lowers their expressions (&'tcx H::Expr)
into instances of this Expr enum. This lowering can be done
basically as lazily or as eagerly as desired: every recursive
reference to an expression in this enum is an ExprId, which
may in turn be another instance of this enum (boxed), or else an
unlowered &'tcx H::Expr. Note that instances of Expr are very
short-lived. They are created by Thir::to_expr, analyzed and
converted into MIR, and then discarded.
If you compare Expr to the full compiler AST, you will see it is
a good bit simpler. In fact, a number of the more straight-forward
MIR simplifications are already done in the impl of Thir. For
example, method calls and overloaded operators are absent: they are
expected to be converted into Expr::Call instances.
Fields
ty: Ty<'tcx>type of this expression
temp_lifetime: Option<Scope>lifetime of this expression if it should be spilled into a temporary; should be None only if in a constant context
span: Spanspan of the expression in the source
kind: ExprKind<'tcx>kind of expression
Trait Implementations
Auto Trait Implementations
impl<'tcx> !RefUnwindSafe for Expr<'tcx>impl<'tcx> !UnwindSafe for Expr<'tcx>Blanket Implementations
Layout
Note: Most layout information is completely unstable and may be different between compiler versions and platforms. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 144 bytes