3 #![warn(clippy::manual_filter_map)]
4 #![allow(clippy::redundant_closure)] // FIXME suggestion may have redundant closure
8 let _ = (0..).filter_map(|a| to_opt(a));
10 // ref pattern, expect()
11 let _ = (0..).filter_map(|a| to_opt(a));
13 // is_ok(), unwrap_or()
14 let _ = (0..).filter_map(|a| to_res(a).ok());
19 let _ = (0..).filter(|n| *n > 1).map(|n| n + 1);
21 // very close but different since filter() provides a reference
22 let _ = (0..).filter(|n| to_opt(n).is_some()).map(|a| to_opt(a).unwrap());
24 // similar but different
25 let _ = (0..).filter(|n| to_opt(n).is_some()).map(|n| to_res(n).unwrap());
27 .filter(|n| to_opt(n).map(|n| n + 1).is_some())
28 .map(|a| to_opt(a).unwrap());
31 fn to_opt<T>(_: T) -> Option<T> {
35 fn to_res<T>(_: T) -> Result<T, ()> {
40 field: Option<String>,
44 field: Result<String, ()>,
48 let vec = vec![OptionFoo {
49 field: Some(String::from("str")),
53 .filter_map(|f| f.field.clone());
55 let vec = vec![ResultFoo {
56 field: Ok(String::from("str")),
58 let _ = vec.iter().filter_map(|f| f.field.clone().ok());