about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--clippy_lints/src/methods/mod.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs
index 30c82e3969f..d49a05f5186 100644
--- a/clippy_lints/src/methods/mod.rs
+++ b/clippy_lints/src/methods/mod.rs
@@ -706,8 +706,11 @@ declare_clippy_lint! {
 
 
 /// **What it does:** Checks for `filter_map` calls which could be replaced by `filter` or `map`.
+/// More specifically it checks if the closure provided is only performing one of the
+/// filter or map operations and suggests the appropriate option.
 ///
-/// **Why is this bad?** Complexity
+/// **Why is this bad?** Complexity. The intent is also clearer if only a single
+/// operation is being performed.
 ///
 /// **Known problems:** None
 ///
@@ -715,10 +718,18 @@ declare_clippy_lint! {
 /// ```rust
 /// let _ = (0..3).filter_map(|x| if x > 2 { Some(x) } else { None });
 /// ```
-/// This could be written as:
+/// As there is no transformation of the argument this could be written as:
 /// ```rust
 /// let _ = (0..3).filter(|&x| x > 2);
 /// ```
+///
+/// ```rust
+/// let _ = (0..4).filter_map(i32::checked_abs);
+/// ```
+/// As there is no conditional check on the argument this could be written as:
+/// ```rust
+/// let _ = (0..4).map(i32::checked_abs);
+/// ```
 declare_clippy_lint! {
     pub UNNECESSARY_FILTER_MAP,
     complexity,