| #![warn(clippy::match_single_binding)] | |
| #![allow(unused_variables)] | |
| fn main() { | |
| // Lint (additional curly braces needed, see #6572) | |
| struct AppendIter<I> | |
| where | |
| I: Iterator, | |
| { | |
| inner: Option<(I, <I as Iterator>::Item)>, | |
| } | |
| #[allow(dead_code)] | |
| fn size_hint<I: Iterator>(iter: &AppendIter<I>) -> (usize, Option<usize>) { | |
| match &iter.inner { | |
| Some((iter, _item)) => { | |
| let (min, max) = iter.size_hint(); | |
| (min.saturating_add(1), max.and_then(|max| max.checked_add(1))) | |
| }, | |
| None => (0, Some(0)), | |
| } | |
| } | |
| // Lint (no additional curly braces needed) | |
| let opt = Some((5, 2)); | |
| let get_tup = || -> (i32, i32) { (1, 2) }; | |
| match opt { | |
| #[rustfmt::skip] | |
| Some((first, _second)) => { | |
| let (a, b) = get_tup(); | |
| println!("a {a:?} and b {b:?}") | |
| }, | |
| None => println!("nothing"), | |
| } | |
| fn side_effects() {} | |
| // Lint (scrutinee has side effects) | |
| // issue #7094 | |
| side_effects(); | |
| println!("Side effects"); | |
| // Lint (scrutinee has side effects) | |
| // issue #7094 | |
| let x = 1; | |
| match x { | |
| //~^ match_single_binding | |
| 0 => 1, | |
| _ => 2, | |
| }; | |
| println!("Single branch") | |
| } |