fn move_paths_for_fields(&self,
                             base_lv: &Lvalue<'tcx>,
                             variant_path: MovePathIndex,
                             variant: ty::VariantDef<'tcx>,
                             substs: &'tcx Substs<'tcx>)
                             -> Vec<(Lvalue<'tcx>, Option<MovePathIndex>)>
    {
        let move_paths = &self.move_data().move_paths;
        variant.fields.iter().enumerate().map(|(i, f)| {
            let subpath =
                super::move_path_children_matching(move_paths, variant_path, |p| {
                    match p {
                        &Projection {
                            elem: ProjectionElem::Field(idx, _), ..
                        } => idx.index() == i,
                        _ => false
                    }
                });

            let field_ty =
                self.tcx.normalize_associated_type_in_env(
                    &f.ty(self.tcx, substs),
                    self.param_env()
                );
            (base_lv.clone().field(Field::new(i), field_ty), subpath)
        }).collect()
    }
/// Return the lvalue and move path for each field of `variant`,
/// (the move path is `None` if the field is a rest field).
Return the lvalue and move path for each field of `variant`,
(the move path is `None` if the field is a rest field).
Return the lvalue and move path for each field of ` variant ` ( the move path is ` None ` if the field is a rest field ) .
fn move_paths_for_fields(&self,
                             base_lv: &Lvalue<'tcx>,
                             variant_path: MovePathIndex,
                             variant: ty::VariantDef<'tcx>,
                             substs: &'tcx Substs<'tcx>)
                             -> Vec<(Lvalue<'tcx>, Option<MovePathIndex>)>
    {
        let move_paths = &self.move_data().move_paths;
        variant.fields.iter().enumerate().map(|(i, f)| {
            let subpath =
                super::move_path_children_matching(move_paths, variant_path, |p| {
                    match p {
                        &Projection {
                            elem: ProjectionElem::Field(idx, _), ..
                        } => idx.index() == i,
                        _ => false
                    }
                });
            let field_ty =
                self.tcx.normalize_associated_type_in_env(
                    &f.ty(self.tcx, substs),
                    self.param_env()
                );
            (base_lv.clone().field(Field::new(i), field_ty), subpath)
        }).collect()
    }
fn move_paths_for_fields ( & self , base_lv : & Lvalue < ' tcx > , variant_path : MovePathIndex , variant : ty :: VariantDef < ' tcx > , substs : & ' tcx Substs < ' tcx > ) -> Vec < ( Lvalue < ' tcx > , Option < MovePathIndex > ) > { let move_paths = & self . move_data ( ) . move_paths ; variant . fields . iter ( ) . enumerate ( ) . map ( | ( i , f ) | { let subpath = super :: move_path_children_matching ( move_paths , variant_path , | p | { match p { & Projection { elem : ProjectionElem :: Field ( idx , _ ) , .. } => idx . index ( ) == i , _ => false } } ) ; let field_ty = self . tcx . normalize_associated_type_in_env ( & f . ty ( self . tcx , substs ) , self . param_env ( ) ) ; ( base_lv . clone ( ) . field ( Field :: new ( i ) , field_ty ) , subpath ) } ) . collect ( ) }
Return the lvalue and move path for each field of `variant`,
(the move path is `None` if the field is a rest field).
Return the lvalue and move path for each field of ` variant ` ( the move path is ` None ` if the field is a rest field ) .
&self
base_lv
&Lvalue<'tcx>
variant_path
MovePathIndex
variant
ty::VariantDef<'tcx>
substs
&'tcx Substs<'tcx>
&self
base_lv
&Lvalue<'tcx>
variant_path
MovePathIndex
variant
ty::VariantDef<'tcx>
substs
&'tcx Substs<'tcx>