]> git.lizzy.rs Git - rust.git/commitdiff
Use `each_binding_or_first` in `capture_local_usage`
authorJason Newcomb <jsnewcomb@pm.me>
Mon, 16 Aug 2021 00:25:10 +0000 (20:25 -0400)
committerJason Newcomb <jsnewcomb@pm.me>
Mon, 16 Aug 2021 00:32:47 +0000 (20:32 -0400)
clippy_utils/src/lib.rs

index b40b42fa6d3b610d817056d448bc22347335ce63..bd229402f418203b67e9845c5617450566d6043f 100644 (file)
@@ -733,16 +733,18 @@ fn bitor_assign(&mut self, rhs: Self) {
 pub fn capture_local_usage(cx: &LateContext<'tcx>, e: &Expr<'_>) -> CaptureKind {
     fn pat_capture_kind(cx: &LateContext<'_>, pat: &Pat<'_>) -> CaptureKind {
         let mut capture = CaptureKind::Ref(Mutability::Not);
-        pat.each_binding(|_, id, span, _| {
-            match cx.typeck_results().extract_binding_mode(cx.sess(), id, span).unwrap() {
-                BindingMode::BindByValue(_) if !is_copy(cx, cx.typeck_results().node_type(id)) => {
-                    capture = CaptureKind::Value;
-                },
-                BindingMode::BindByReference(Mutability::Mut) if capture != CaptureKind::Value => {
-                    capture = CaptureKind::Ref(Mutability::Mut);
-                },
-                _ => (),
-            }
+        pat.each_binding_or_first(&mut |_, id, span, _| match cx
+            .typeck_results()
+            .extract_binding_mode(cx.sess(), id, span)
+            .unwrap()
+        {
+            BindingMode::BindByValue(_) if !is_copy(cx, cx.typeck_results().node_type(id)) => {
+                capture = CaptureKind::Value;
+            },
+            BindingMode::BindByReference(Mutability::Mut) if capture != CaptureKind::Value => {
+                capture = CaptureKind::Ref(Mutability::Mut);
+            },
+            _ => (),
         });
         capture
     }