]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/match_single_binding.rs
iterate List by value
[rust.git] / tests / ui / match_single_binding.rs
index 55b0b09a008842805492ba598f204a222d784844..8c182148ae184652c18b413e3f239dde954b6da1 100644 (file)
@@ -1,13 +1,25 @@
 // run-rustfix
 
 #![warn(clippy::match_single_binding)]
-#![allow(clippy::many_single_char_names, clippy::toplevel_ref_arg)]
+#![allow(unused_variables, clippy::many_single_char_names, clippy::toplevel_ref_arg)]
 
 struct Point {
     x: i32,
     y: i32,
 }
 
+fn coords() -> Point {
+    Point { x: 1, y: 2 }
+}
+
+macro_rules! foo {
+    ($param:expr) => {
+        match $param {
+            _ => println!("whatever"),
+        }
+    };
+}
+
 fn main() {
     let a = 1;
     let b = 2;
@@ -23,6 +35,8 @@ fn main() {
         (x, y, z) => println!("{} {} {}", x, y, z),
     }
     // Ok
+    foo!(a);
+    // Ok
     match a {
         2 => println!("2"),
         _ => println!("Not 2"),
@@ -72,4 +86,17 @@ fn main() {
     match x {
         ref mut mr => println!("Got a mutable reference to {}", mr),
     }
+    // Lint
+    let product = match coords() {
+        Point { x, y } => x * y,
+    };
+    // Lint
+    let v = vec![Some(1), Some(2), Some(3), Some(4)];
+    #[allow(clippy::let_and_return)]
+    let _ = v
+        .iter()
+        .map(|i| match i.unwrap() {
+            unwrapped => unwrapped,
+        })
+        .collect::<Vec<u8>>();
 }