diff options
Diffstat (limited to 'src/tools/clippy/tests/ui/find_map.rs')
-rw-r--r-- | src/tools/clippy/tests/ui/find_map.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/find_map.rs b/src/tools/clippy/tests/ui/find_map.rs new file mode 100644 index 000000000..88d3b0e74 --- /dev/null +++ b/src/tools/clippy/tests/ui/find_map.rs @@ -0,0 +1,33 @@ +#![warn(clippy::all, clippy::pedantic)] + +#[derive(Debug, Copy, Clone)] +enum Flavor { + Chocolate, +} + +#[derive(Debug, Copy, Clone)] +enum Dessert { + Banana, + Pudding, + Cake(Flavor), +} + +fn main() { + let desserts_of_the_week = vec![Dessert::Banana, Dessert::Cake(Flavor::Chocolate), Dessert::Pudding]; + + let a = ["lol", "NaN", "2", "5", "Xunda"]; + + let _: Option<i32> = a.iter().find(|s| s.parse::<i32>().is_ok()).map(|s| s.parse().unwrap()); + + #[allow(clippy::match_like_matches_macro)] + let _: Option<Flavor> = desserts_of_the_week + .iter() + .find(|dessert| match *dessert { + Dessert::Cake(_) => true, + _ => false, + }) + .map(|dessert| match *dessert { + Dessert::Cake(ref flavor) => *flavor, + _ => unreachable!(), + }); +} |