fn record_rvalue_scope_rec(
    rvalue_scopes: &mut RvalueScopes,
    expr: &Expr<'_>,
    lifetime: Option<Scope>,
Expand description

Applied to an expression expr if expr – or something owned or partially owned by expr – is going to be indirectly referenced by a variable in a let statement. In that case, the “temporary lifetime” or expr is extended to be the block enclosing the let statement.

More formally, if expr matches the grammar ET, record the rvalue scope of the matching <rvalue> as blk_id:

    ET = *ET
       | ET[...]
       | ET.f
       | (ET)
       | <rvalue>

Note: ET is intended to match “rvalues or places based on rvalues”.