// run-rustfix #![warn(clippy::needless_match)] #![allow(clippy::manual_map)] #![allow(dead_code)] #[derive(Clone, Copy)] enum Choice { A, B, C, D, } #[allow(unused_mut)] fn useless_match() { let mut i = 10; let _: i32 = i; let _: i32 = i; let mut _i_mut = i; let s = "test"; let _: &str = s; } fn custom_type_match(se: Choice) { let _: Choice = se; // Don't trigger let _: Choice = match se { Choice::A => Choice::A, Choice::B => Choice::B, _ => Choice::C, }; // Mingled, don't trigger let _: Choice = match se { Choice::A => Choice::B, Choice::B => Choice::C, Choice::C => Choice::D, Choice::D => Choice::A, }; } fn option_match(x: Option) { let _: Option = x; // Don't trigger, this is the case for manual_map_option let _: Option = match x { Some(a) => Some(-a), None => None, }; } fn func_ret_err(err: T) -> Result { Err(err) } fn result_match() { let _: Result = Ok(1); let _: Result = func_ret_err(0_i32); } fn if_let_option() -> Option { Some(1) } fn if_let_result(x: Result<(), i32>) { let _: Result<(), i32> = x; let _: Result<(), i32> = x; // Input type mismatch, don't trigger let _: Result<(), i32> = if let Err(e) = Ok(1) { Err(e) } else { x }; } fn if_let_custom_enum(x: Choice) { let _: Choice = x; // Don't trigger let _: Choice = if let Choice::A = x { Choice::A } else if true { Choice::B } else { x }; } fn main() {}