@@ -126,6 +126,7 @@ use rustc_span::{InnerSpan, Span};
126126use source:: { SpanRangeExt , walk_span_to_context} ;
127127use visitors:: { Visitable , for_each_unconsumed_temporary} ;
128128
129+ use crate :: ast_utils:: unordered_over;
129130use crate :: consts:: { ConstEvalCtxt , Constant , mir_to_const} ;
130131use crate :: higher:: Range ;
131132use crate :: ty:: { adt_and_variant_of_res, can_partially_move_ty, expr_sig, is_copy, is_recursively_primitive_type} ;
@@ -1992,7 +1993,7 @@ pub fn is_expr_identity_of_pat(cx: &LateContext<'_>, pat: &Pat<'_>, expr: &Expr<
19921993 ( PatKind :: Tuple ( pats, dotdot) , ExprKind :: Tup ( tup) )
19931994 if dotdot. as_opt_usize ( ) . is_none ( ) && pats. len ( ) == tup. len ( ) =>
19941995 {
1995- zip ( pats, tup) . all ( | ( pat, expr) | is_expr_identity_of_pat ( cx, pat, expr, by_hir) )
1996+ over ( pats, tup, | pat, expr| is_expr_identity_of_pat ( cx, pat, expr, by_hir) )
19961997 } ,
19971998 ( PatKind :: Slice ( before, None , after) , ExprKind :: Array ( arr) ) if before. len ( ) + after. len ( ) == arr. len ( ) => {
19981999 zip ( before. iter ( ) . chain ( after) , arr) . all ( |( pat, expr) | is_expr_identity_of_pat ( cx, pat, expr, by_hir) )
@@ -2004,7 +2005,7 @@ pub fn is_expr_identity_of_pat(cx: &LateContext<'_>, pat: &Pat<'_>, expr: &Expr<
20042005 if let ExprKind :: Path ( ident) = & ident. kind
20052006 && qpath_res ( & pat_ident, pat. hir_id ) == qpath_res ( ident, expr. hir_id )
20062007 // check fields
2007- && zip ( field_pats, fields) . all ( | ( pat, expr) | is_expr_identity_of_pat ( cx, pat, expr, by_hir) )
2008+ && over ( field_pats, fields, | pat, expr| is_expr_identity_of_pat ( cx, pat, expr, by_hir) )
20082009 {
20092010 true
20102011 } else {
@@ -2017,10 +2018,8 @@ pub fn is_expr_identity_of_pat(cx: &LateContext<'_>, pat: &Pat<'_>, expr: &Expr<
20172018 // check ident
20182019 qpath_res ( & pat_ident, pat. hir_id ) == qpath_res ( ident, expr. hir_id )
20192020 // check fields
2020- && field_pats. iter ( ) . all ( |field_pat| {
2021- fields. iter ( ) . any ( |field| {
2022- field_pat. ident == field. ident && is_expr_identity_of_pat ( cx, field_pat. pat , field. expr , by_hir)
2023- } )
2021+ && unordered_over ( field_pats, fields, |field_pat, field| {
2022+ field_pat. ident == field. ident && is_expr_identity_of_pat ( cx, field_pat. pat , field. expr , by_hir)
20242023 } )
20252024 } ,
20262025 _ => false ,
0 commit comments