fn populate_expression(self, expression: &mut MirRelationExpr) {
        // Convert the bindings in to a sequence, by the local identifier.
        let mut bindings = self.bindings.into_iter().collect::<Vec<_>>();
        bindings.sort_by_key(|(_, i)| *i);

        for (value, index) in bindings.into_iter().rev() {
            let new_expression = MirRelationExpr::Let {
                id: LocalId::new(index),
                value: Box::new(value),
                body: Box::new(expression.take_dangerous()),
            };
            *expression = new_expression;
        }
    }
/// Populates `expression` with necessary `Let` bindings.
///
/// This population may result in substantially more `Let` bindings that one
/// might expect. It is very appropriate to run the `InlineLet` transformation
/// afterwards to remove `Let` bindings that it deems unhelpful.
Populates `expression` with necessary `Let` bindings.
This population may result in substantially more `Let` bindings that one
might expect. It is very appropriate to run the `InlineLet` transformation
afterwards to remove `Let` bindings that it deems unhelpful.
Populates ` expression ` with necessary ` Let ` bindings . This population may result in substantially more ` Let ` bindings that one might expect . It is very appropriate to run the ` InlineLet ` transformation afterwards to remove ` Let ` bindings that it deems unhelpful .
fn populate_expression(self, expression: &mut MirRelationExpr) {
        // Convert the bindings in to a sequence, by the local identifier.
        let mut bindings = self.bindings.into_iter().collect::<Vec<_>>();
        bindings.sort_by_key(|(_, i)| *i);
        for (value, index) in bindings.into_iter().rev() {
            let new_expression = MirRelationExpr::Let {
                id: LocalId::new(index),
                value: Box::new(value),
                body: Box::new(expression.take_dangerous()),
            };
            *expression = new_expression;
        }
    }
fn populate_expression ( self , expression : & mut MirRelationExpr ) { // Convert the bindings in to a sequence, by the local identifier. let mut bindings = self . bindings . into_iter ( ) . collect :: < Vec < _ > > ( ) ; bindings . sort_by_key ( | ( _ , i ) | * i ) ; for ( value , index ) in bindings . into_iter ( ) . rev ( ) { let new_expression = MirRelationExpr :: Let { id : LocalId :: new ( index ) , value : Box :: new ( value ) , body : Box :: new ( expression . take_dangerous ( ) ) , } ; * expression = new_expression ; } }
Populates `expression` with necessary `Let` bindings.
Populates ` expression ` with necessary ` Let ` bindings .
self
expression
&mut MirRelationExpr
self
expression
&mut MirRelationExpr